批处理文件,用于检查某个进程(ultrasurf)是否正在运行,然后执行关闭(如果存在)

时间:2013-04-18 18:12:42

标签: batch-file

我从互联网上获得了一个批处理文件:

@for /f "tokens=5 delims= " %%i in ('netstat -ano -p tcp ^| find "127.0.0.1"') do Taskkill /F /PID %%i

这会杀死Ultrasurf过程,但是,我想要做的就是让它检查同一个过程然后关闭(如果存在)。

我尝试了以下内容:

@for /f "tokens=5 delims= " %%i in ('netstat -ano -p tcp ^| find "127.0.0.1"') do shutdown /s

这将发出关闭进程是否正在运行的命令。我需要它只在存在时执行。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您的批处理文件不会杀死Ultrasurf,它会杀死本地主机上具有打开的tcp端口的所有进程。

如果运行资源监视器,您将看到许多服务都具有用于RPC服务器的打开tcp端口。因此,修改后的脚本执行立即关闭,因为for命令找到至少1个匹配。

修改此question

的答案之一
tasklist /FI "IMAGENAME eq ultrasurf.exe" 2>NUL | find /I /N "ultrasurf.exe">NUL
if "%ERRORLEVEL%"=="0" shutdown /s /f

警告:未经测试的代码