我有一个进程,如果它没有找到它的目标就会卡住,所以我会在一段时间之后调用批处理文件来杀死它
start C:\file\server\bin\killput.bat
C:\file\server\bin\putty.exe -ssh 192.168.0.210 -l oracle -pw oracle -m C:\file\server\bin\List_AIX.txt
如果我的进程被执行,那么如何杀死运行kill命令的cmd
我的killput.bat批处理文件的代码
Timeout 20
taskkill /f /im putty.exe
答案 0 :(得分:0)
我检查了我的腻子,如果失败,它就不会保持任何连接,所以你只是在#net; netstat"命令输出,如果你在该输出中找不到它,则表示连接失败或刚刚完成。所以我认为你可以在你的杀戮批次上做类似的事情:
timeout 20
SET tempfl=c:\windows\temp\netstatresult.txt
netstat -aonb>%tempfl%
for /f "delims=" %i in ('findstr /i /C:putty %tempfl%') do SET output=%i
if NOT DEFINED %output% taskkill /f /im putty.exe
del %tempfl%
因此,这会将 netstat 的输出写入临时文件,之后我们使用 findstr 检查commmand的输出是否包含子字符串putty。 如果 findstr 有任何结果,则变量输出设置为值,否则无法定义,因此如果有值,则表示putty成功运行,你不必杀死它,如果你不能杀死腻子过程。
如果没有定义变量,那么运行 taskkill 只会有一个简单的,然后删除创建的临时文件。
确定您是否不知道netstat用于什么: https://commandwindows.com/netstat.htm
答案 1 :(得分:0)
Start C:\file\server\bin\putty.exe -ssh 192.168.0.210 -l oracle -pw oracle -m C:\file\server\bin\List_AIX.txt
Timeout 20
Taskkill /IM PuTTY.exe