我有这批来杀死一些过程!
@echo off
set process=Program with space.exe,winword.exe,Opera.exe,mshta.exe,chrome.exe,calc.exe,skype.exe,iexplore.exe
set Tmp=Tmp.txt
set LogFile=ProcessKillerLog.txt
If Exist %Tmp% Del %Tmp%
If Exist %LogFile% Del %LogFile%
For %%a in (%process%) Do Call :KillMyProcess %%a %Tmp%
Cmd /U /C Type %Tmp% > %LogFile%
If Exist %Tmp% Del %Tmp%
Exit /b
:KillMyProcess
Taskkill /IM "%1" /F /T >>%2 2>&1
所以我的目标是杀死一个名为Program with space.exe
的空间进程,我应该修改什么?
谢谢!
答案 0 :(得分:2)
第一个问题是For %%a in (%process%) Do
,因为这会在空格和逗号中分割%process%
的内容,因此您将Program
,with
spaces
视为三个条目。
你应该首先引用它们。
set process="Program with space.exe",winword.exe, ...
call :KillMyProcess
对内容有潜在危险,但在您的情况下可行。
但是,现在你得到一些你的流程名称和一些没有引号的你应该将taskkill更改为"%~1"
,所以首先删除引号然后再次添加。
:KillMyProcess
Taskkill /IM "%~1" /F /T >>%2 2>&1