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

时间:2013-07-12 22:22:36

标签: process cmd

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

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

示例(伪代码):

If calc.exe is running                        
Stop calc.exe

我想要这样的事情:

@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

3 个答案:

答案 0 :(得分:15)

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

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

taskkill /im calc.exe

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

taskkill /im calc.exe >nul 2>nul

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

taskkill /im calc.exe >nul 2>nul && (
  echo calc.exe was killed
) || (
  echo no process was killed
)

或者您可以使用ERRORLEVEL根据结果确定要做什么。

答案 1 :(得分:3)

更可读和更简单的命令是这样的:

taskkill / F / FI“IMAGENAME eq calc.exe”

如果进程未运行,则该方法永远不会返回错误代码,如果进程未运行,/ IM开关 返回错误。您还可以使用以下通配符:

taskkill / F / FI“IMAGENAME eq calc * .exe”可以杀死任何以'calc'开头并以名称中的'.exe'结尾的进程。

答案 2 :(得分:0)

签出tasklist命令 - 此命令提供正在运行的任务和服务的列表。检查您感兴趣的任务是否正在使用正则表达式

运行

然后使用taskkill命令终止服务或任务。