批处理脚本终止进程

时间:2017-10-13 08:18:41

标签: batch-file for-loop while-loop

我在任务列表中有Process1,Process2,Process3我想写入循环或循环返回重复相同的任务来杀死'n'号码进程 我在批处理脚本中提到的。 下面是用于杀死进程的示例脚本

@Echo Off

Tasklist | Findstr /I “Process1”
IF ERRORLEVEL 1 GOTO :Killprocess
GOTO:EOF

:Killprocess
Taskkill /IM “Process1”

2 个答案:

答案 0 :(得分:1)

如果你试图反复杀死同一个程序,只需在cmd.exe中执行tasklist,然后找到它的PID标记。 例如:

 Image Name                     PID Session Name        Mem Usage
 ========================= ======== ================ ============
 firefox.exe                  26356 Console             139,352 K
 regedit.exe                  24244 Console               9,768 K
 cmd.exe                      18664 Console               2,380 K
 conhost.exe                   2528 Console               7,852 K
 notepad.exe                  17364 Console               7,892 K
 notepad.exe                  24696 Console              22,028 K
 notepad.exe                  25304 Console               5,852 K
 explorer.exe                  2864 Console              72,232 K

之后,只需将PID放入文本中即可。我会这样运行程序:

@echo off

TASKLIST
TASKKILL /PID (your PID here) /F
TASKKILL /PID (PID 2) /F

这将自动终止您的任务。你不需要找到任务。如果该程序没有运行,那么它就不会杀死它。

如果您的流程不断更改其PID,或者不在同一会话下运行,请按原样运行:

@echo off
TASKLIST
TASKKILL /IM (program name) /F
TASKKILL /IM (program name 2) /F

同样,如果程序没有运行,程序也不会关闭。

希望这有帮助!

Find more info here...

答案 1 :(得分:0)

感谢大家的建议......用脚本完成

   @echo off
 set len=3
 set obj[0]=chrome.exe
 set obj[1]=vlc.exe
 set obj[2]=MicrosoftEdge.exe

  set i=0
    :loop
    if %i% equ %len% goto :eof

          for /f "usebackq delims== tokens=2"            %%j in (`set obj[%i%]`) do (
          TASKLIST |FINDSTR /I "%%j"
           IF ERRORLEVEL 0 TASKKILL /IM "%%j" /F)


         set /a i=%i%+1
         goto loop