我正在运行一个简单的批处理脚本来启动2个程序。如何添加一行来检查程序是否正在运行。然后我怎么能跳过程序的启动并转到下一行。
@echo off
tasklist /FI "IMAGENAME eq Test123.exe" 2>NUL | find /I /N "Test123.exe">NUL
if "%ERRORLEVEL%"=="0" echo program is running
cd "C:\Program Files (x86)\Test123"
start Test123.exe
cd "C:\Program Files (x86)\Test123"
start OtherTest123.exe
exit
答案 0 :(得分:0)
您可以使用标签和GOTO来控制文件中的流程,如下所示:
@echo off
tasklist /FI "IMAGENAME eq Test123.exe" 2>NUL | find /I /N "Test123.exe">NUL
if "%ERRORLEVEL%"=="0" GOTO nextprogram
cd "C:\Program Files (x86)\Test123"
start Test123.exe
:nextprogram
cd "C:\Program Files (x86)\Test123"
start OtherTest123.exe
exit
在此处查看goto的更多详细说明:https://ss64.com/nt/goto.html
答案 1 :(得分:0)
@ user3154458的答案可行,但为了便于阅读和维护,我建议使用代码块。此外,使用CD /D
将确保同时更改默认驱动器。
@echo off
PUSHD "C:\Program Files (x86)\Test123"
tasklist /FI "IMAGENAME eq Test123.exe" 2>NUL | find /I /N "Test123.exe">NUL
if NOT "%ERRORLEVEL%"=="0" (start Test123.exe)
start OtherTest123.exe
POPD
exit /B %ERRORLEVEL%
答案 2 :(得分:0)
我建议也许这样做:
@Echo Off
CD /D "%ProgramFiles(x86)%\Test123" 2>Nul||Exit /B
TaskList|FindStr/I "\<Test123.exe\>">Nul&&(Start "" "OtherTest123.exe")||Start "" "Test123.exe"