我需要创建一个启动process1的脚本,该脚本会生成process2,然后等待process2退出并启动process3。
听起来对我来说很简单,但我根本无法正常工作。
我尝试寻找类似的解决方案,发现了类似的东西
tasklist /FI "IMAGENAME eq process1"
if errorlevel 0 (
echo "1"
exit 0
) else (
echo "2"
exit 0
)
但即使是这种简单的东西,也会在1000个炮弹周围产生并崩溃
我很确定自己在这里做错了,但我找不到答案。
答案 0 :(得分:1)
您的问题似乎是您对if errorlevel 0
的解释与cmd
的解释不同。
if errorlevel n
被cmd
解释为“如果错误级别为n 或大于n ”
因此,if errorlevel 0
本质上总是正确(在某些深奥的情况下,errorlevel
变为负数)。
解决方案:最简单的方法可能是if %errorlevel%==0
另一种选择:if errorlevel 1 (the "else" part from your code) else (the TRUE part of your code)
答案 1 :(得分:0)
start
有一个/wait
开关,它告诉批处理启动程序,直到脚本完成才继续执行脚本。
start "" /wait process1
start "" /wait process2
start "" /wait process3
答案 2 :(得分:0)
已解决:
所以,@ elzooilogico指出我做错了-由于某种原因,我将其命名为tasklist.bat并对其进行了自我命名。
我的脚本看起来像这样,就像一个符咒一样
start process1.lnk
timeout /t 50
:loop
tasklist /FI "IMAGENAME eq process2.exe" 2>NUL | find /I /N "process2.exe">NUL
if errorlevel 1 (
start process3
) else (
timeout /t 5
goto loop
)
它将启动process1,等待50秒,然后在不再存在process2时退出,或者以5秒的间隔循环直到process2退出。最终,它会启动process3。