从命令行中只杀死一个 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 实例的主要内容,如果未能解决你的问题,请参考以下文章

Unix命令行中的Ctrl + Z和Ctrl + C的区别

系统无法找到指定的文件,但在命令行中直接工作

SQL从重复行中只选择一行

hbaseshell命令显示已杀死

如何在 shell 脚本中只读取一个字符

Flask-Script Manager