我需要关闭特定Chrome配置文件的所有窗口。假设我执行:
chrome.exe -remote-debugging-port=4000 --user-data-dir=F://chrome
以打开新的 Chrome 配置文件。我需要从cmd/bat关闭此特定的Chrome配置文件。
我试过这个:
taskkill /IM chrome.exe -remote-debugging-port=4000 --user-data-dir=F://chrome
但它不起作用。
您可以使用下面的批处理文件完成此操作:
for /f "tokens=3 delims=," %%a in ('wmic process where "caption='chrome.exe'" get processID^,commandline /format:csv ^| FIND "-remote-debugging-port=4000 --user-data-dir=F://chrome"') do set _pid=%%a
taskkill /f /pid %_pid% /t
解释
wmic process where "caption='chrome.exe'" get processID^,commandline /format:csv
列出了所有chrome.exe
进程,其中包含用于启动它们的命令行以及我们将用于终止它的进程 ID。- 管道 (
|
) 这将进入FIND "-remote-debugging-port=4000 --user-data-dir=F://chrome"
将仅返回使用您使用的命令启动的chrome.exe
进程。 for /f "tokens=3 delims=," %%a in ("...") do set _pid=%%a
会将_pid
环境变量设置为我们要杀死的进程的进程 ID。wmic
命令与find
命令相结合应该只给我们一个结果。如果多次使用该命令,则只会在列表中找到最后一个进程的进程 ID。taskkill /f /pid %_pid% /t
:/f
强制任务结束,否则 Chrome 将保持打开状态。/pid %_pid%
将提供我们在for
循环中获得的进程 ID。/t
告诉taskkill
杀死整个进程树。由于每个Chrome标签页和扩展程序都在自己的进程中运行,因此我们希望确保它们也被杀死。