【问题标题】:taskkill a batch file that kills a tasktaskkill 杀死任务的批处理文件
【发布时间】:2016-12-19 14:03:58
【问题描述】:

如果没有找到目标,我的进程会卡住,所以我调用一个批处理文件在一段时间后将其杀死

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

【问题讨论】:

  • 所以基本上你想检查腻子是否正确运行,对吧?如果你发现它被卡住了,你想杀死否则会杀死腻子进程的批处理文件吗?我建议:从 commandline 运行 putty,就像现在处理第一个批处理文件一样(-> 只是下一行)。如果 putty 动作正确并且不管它做什么,输入 echo %ERRORLEVEL% 并点击 [Enter]。如果该值与 0 不同,我想我可以提供帮助。不过那将是我的方式......

标签: batch-file cmd putty


【解决方案1】:
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

【讨论】:

    【解决方案2】:

    我检查了我的腻子,如果失败,它将不会保持任何连接,因此您不会在“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 检查命令的输出是否包含子字符串 putty。 如果 findstr 有任何结果,则变量 output 被设置为值,否则它不会被定义,所以如果有一个值,则意味着 putty 运行成功并且你没有不必杀死它,如果没有,您可以杀死腻子进程。

    之后,如果没有定义变量,则只有一个简单的 if 运行 taskkill,然后删除创建的临时文件。

    只要确定你是否不知道 netstat 的用途: https://commandwindows.com/netstat.htm

    【讨论】:

      猜你喜欢
      • 2017-05-04
      • 1970-01-01
      • 2021-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-22
      • 2015-02-18
      • 1970-01-01
      相关资源
      最近更新 更多