如何通过批处理脚本自动停止进程

use*_*034 8 cmd process

如何从批处理/ cmd文件中检查进程是否正在运行?如果进程正在运行,我该如何自动停止进程?

就像cmd脚本一样,有人可以给我一些提示或帮助我制作那种脚本.

示例(伪代码):

If calc.exe is running                        
Stop calc.exe
Run Code Online (Sandbox Code Playgroud)

我想要这样的东西:

@echo off

:x  
PATH=C:\Windows\System32\calc.exe  
If calc.exe is ON goto Process_Stop

:Process_Stop  
net stop calc.exe  
goto x
Run Code Online (Sandbox Code Playgroud)

dbe*_*ham 16

首先,你有错误的命令来停止像calc.exe这样的进程.NET STOP将停止服务,但不是正常的程序进程.你想要TASKKILL.

第二 - 如果你知道你想要杀死进程,那么为什么你认为你必须先检查它是否先运行才能杀死它?你可以简单地试图杀死这个过程.如果它不存在,则会生成错误,并且不会造成任何损害.如果它确实存在,那么它将被成功消息杀死.

taskkill /im calc.exe
Run Code Online (Sandbox Code Playgroud)

如果您不想看到错误消息,则使用将stderr重定向到nul 2>nul.如果您不想查看成功消息,则使用将stdout重定向到nul >nul.

taskkill /im calc.exe >nul 2>nul
Run Code Online (Sandbox Code Playgroud)

如果您想根据结果采取行动,那么您可以使用条件&&||运算符来获得成功和失败.

taskkill /im calc.exe >nul 2>nul && (
  echo calc.exe was killed
) || (
  echo no process was killed
)
Run Code Online (Sandbox Code Playgroud)

或者您可以使用ERRORLEVEL根据结果确定要执行的操作.