代码之家  ›  专栏  ›  技术社区  ›  user1372896

批处理中的任务终止和计时器

  •  0
  • user1372896  · 技术社区  · 12 年前

    我当前有此批处理脚本:

    start udp%1.exe
    timeout /t %2
    taskkill /f /im "udp%1.exe"
    

    这非常有效,在选定的时间后会终止程序,但是如果我手动关闭udp%1.exe并启动另一个具有相同ID的程序,则其他批处理脚本中的计时器仍在运行,并将终止下一个启动的程序。我不完全确定是否可以检查进程是否仍在批量运行?如果是的话,关闭计时器,这样它就不会杀死具有相同ID的其他人?

    1 回复  |  直到 12 年前
        1
  •  1
  •   Ben Grant John Hartsock    12 年前

    尝试以下代码:

    @echo off
    start "udp%1.exe"
    timeout /t %2
    
    tasklist /FI "IMAGENAME eq udp%1.exe" 2>NUL | find /I /N "udp%1.exe">NUL
    if "%ERRORLEVEL%"=="0" goto yes
    goto no
    
    :yes
    taskkill /f /im "udp%1.exe"
    exit
    
    :no
    exit
    

    它会等待选定的时间,如果程序正在运行,它会关闭它,如果程序没有运行,它将退出。如果您不想在计时器仍在运行时检测程序是否关闭,您可能需要查看vbs脚本。:)