我正在制作一个批处理程序来检查进程是否处于活动状态以及它是否已关闭...重点是,当进程在名称中有空格时,找不到它。
Set "EXE=Process name.exe">nul 2>&1
FOR /F %%x IN ('tasklist /NH /FI "IMAGENAME eq %EXE%"') DO IF %%x == %EXE% Taskkill /F /IM "%EXE%" >nul 2>&1
答案 0 :(得分:1)
这应该处理代码中的空格,具体取决于第一个任务列表打印的内容:
Set "EXE=Process name.exe"
FOR /F "delims=" %%x IN ('tasklist /NH /FI "IMAGENAME eq %EXE%"') DO IF /i "%%x" == "%EXE%" Taskkill /F /IM "%EXE%" >nul 2>&1
这是另一种方法:
Set "EXE=Process name.exe"
tasklist|find /i "%EXE%" >nul && Taskkill /F /IM "%EXE%" >nul 2>&1
这在功能上是等价的:它只会在任务存在时终止它。
Set "EXE=Process name.exe"
Taskkill /F /IM "%EXE%" >nul 2>&1
答案 1 :(得分:0)
wmic process where name="Process name.exe" get Name,ProcessId
答案 2 :(得分:0)
尝试在您的流程名称周围添加引号,例如
Set EXE="Process name.exe" >nul 2>&1