我查看了start
和tasklist
命令,注意到了两件事。它们都引用了窗口标题。
start "myTest" /b somefile argA
tasklist /fi "WindowTitle eq myTest"
让我困惑的是,任务列表没有返回任何匹配项。我是不是做错了什么,或者这些引用的不是同一个标题
答案1
它们确实指的是同一个标题。它是出现在窗口顶部边框内的标题。问题是您的 START /B 开关导致进程在同一个控制台窗口内启动,而一个窗口只能有一个标题。如果使用 /B 开关,START 不会更改窗口的标题。
使用 /B 开关运行 START 命令,您将看到窗口标题没有改变。
现在运行不带 /B 的 START 命令,您将看到一个带有正确标题的新窗口。您的 TASKLIST 命令现在将找到正确的进程。
答案2
尝试启动此示例Chrome.exe
并在启动后杀死其所有 PID!
@echo off
set MyProcess=Chrome.exe
start "" %MyProcess%
setlocal EnableDelayedExpansion
for /f "TOKENS=2" %%a in ('tasklist /NH /FI "imagename eq %MyProcess%"') do (
Set PID=%%a & echo The PID of %MyProcess% = !PID!
Echo( & Echo To Kill all PID of "%MyProcess%" , just Hit any key & pause
Taskkill /PID !PID! /F /T
)
EndLocal
pause
答案3
您可以轻松地从您正在寻找的进程中检查 Pid,并在需要时随时终止它们
taskkill /pid %PID%
请记住,如果您搜索 cmd 进程,则需要在 Administrator 后加双倍空格。
这里有一个如何使用它的完整示例:
https://gist.github.com/robinrm/ecd1ceb1fc295b2e7b125ca82f42cafe