2

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

@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

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

4

1 回答 1

1

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

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

修改此问题的答案之一

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

警告:未经测试的代码

于 2013-04-18T18:30:06.630 回答