从命令行中只杀死一个 chrome 实例
Posted
技术标签:
【中文标题】从命令行中只杀死一个 chrome 实例【英文标题】:kill only once instance of chrome from command line 【发布时间】:2016-08-19 06:37:52 【问题描述】:我有一个批处理文件,用于在 Chrome 中打开一个运行特定功能的网页。
start http://www.example.com/cgi/myprogram.exe
这个过程运行很快,然后我想自动关闭浏览器窗口。我不想使用 taskkill /IM chrome.exe
因为 Chrome 有许多在"chrome.exe"
下运行的服务,我只想杀死显示在任务管理器的应用程序标签上的服务,而不是进程标签。
这可能吗?
【问题讨论】:
相关:superuser.com/questions/306714/… 【参考方案1】:要杀死新标签,您可以使用:
@echo off
setlocal EnableDelayedExpansion
set "newPIDlist="
set "oldPIDlist=p"
::find old PIDs
for /f "TOKENS=1" %%a in ('wmic PROCESS where "Name='chrome.exe'" get ProcessID ^| findstr [0-9]') do (set "oldPIDlist=!oldPIDlist!%%ap")
::start your site here
start http://www.example.com/cgi/myprogram.exe
::find new PIDs
for /f "TOKENS=1" %%a in ('wmic PROCESS where "Name='chrome.exe'" get ProcessID ^| findstr [0-9]') do (
if "!oldPIDlist:p%%ap=zz!"=="%oldPIDlist%" (set "newPIDlist=/PID %%a !newPIDlist!")
)
echo %newPIDlist%
::wait for page to load
timeout /t 5 /nobreak >nul
taskkill /f %newPIDlist% /T > NUL 2>&1
但是请注意,这不会关闭选项卡,它只会杀死选项卡的进程,导致弹出错误消息。正如here 所讨论的,无法从命令行关闭单个 google chrome 选项卡。
【讨论】:
我认为有时每个进程也可能有多个选项卡,所以这可能会产生意想不到的后果。 你是对的,但据我所知,这是获得正确的唯一原因,例如wmic process call create
不会从谷歌浏览器返回 PID。以上是关于从命令行中只杀死一个 chrome 实例的主要内容,如果未能解决你的问题,请参考以下文章