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

批处理文件,用于检查正在运行的程序,如果不运行,则启动

  •  0
  • jimrice  · 技术社区  · 10 年前

    我一直试图让这个批处理文件正常工作,但一直遇到问题。我想我已经接近了,但需要帮助才能让它发挥作用。当脚本运行时,我得到Find:参数格式不正确。

    我正在Windows Server 2008 R2 Standard上运行此程序。

    @echo off 
    
    
    tasklist /FI "IMAGENAME eq program.exe" | find /i “program.exe" 
    
    
    IF ERRORLEVEL 2 GOTO NEXTPROGRAM
    
    IF ERRORLEVEL 1 GOTO LAUNCHPROGRAM
    
    
    :NEXTPROGRAM
    
    goto SMADMIN
    
    
    
    :LAUNCHPROGRAM
    
    start "" "C:\path\to\program.exe"
    
    goto SMADMIN
    
    
    :SMADMIN
    
    tasklist /FI "IMAGENAME eq program1.exe" | find /i “program1.exe" 
    
    
    IF ERRORLEVEL 2 GOTO NEXTPROGRAM2
    
    IF ERRORLEVEL 1 GOTO LAUNCHPROGRAM2
    
    
    :NEXTPROGRAM2
    
    goto COMPLETE
    
    
    
    :LAUNCHPROGRAM2
    
    start "" "C:\path\to\program1.exe"
    
    goto COMPLETE
    
    1 回复  |  直到 10 年前
        1
  •  1
  •   MichaelS    10 年前

    您可以检查exe是否以这种方式运行:

    SET running=0
    FOR /f "tokens=*" %%A IN ('tasklist^ /v^| findstr /i /c:"program.exe"') DO SET running=1
    IF %running%=1 GOTO NEXTPROGRAM
    IF %running%=0 GOTO LAUNCHPROGRAM
    

    之后,您只需检查%ProgramRunning%是否设置为1。

    在重新使用%running%标志之前,不要忘记将其重置为0。

    推荐文章