如何在程序关闭之前“暂停”批处理脚本?
问题描述:
我有一个看似微不足道的问题,但无法弄清楚。我正在编写一个批处理脚本,该脚本用特定的URL(可以工作)打开Firefox,然后执行更多的工作(当单独执行时也可以工作)。但是,如果我将这两个命令放在一个批处理脚本中,它们将被连续执行。 虽然,我需要脚本等到Firefox关闭。那可能吗?如何在程序关闭之前“暂停”批处理脚本?
这是我有:
echo step one
start /wait "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" http://www.google.com
echo step two
我希望只看到“第二步”我关闭Firefox之后。 I found this thread which seems very similar。但添加/wait
似乎没有帮助。而且我不知道如何根据我的需求调整已接受的解决方案。
任何帮助将不胜感激!
编辑:这是我如何适应脚本在我挂线,但它产生相同的结果:
echo step one
start /wait "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" http://www.google.com
:LOOP
PSLIST firefox >nul 2>&1
IF ERRORLEVEL 1 (
GOTO CONTINUE
) ELSE (
ECHO Firefox is still running
SLEEP 5
GOTO LOOP
)
:CONTINUE
echo step two
但仍然产生相同的行为。 :■
答
试试这个:
echo step one
"C:\Program Files (x86)\Mozilla Firefox\firefox.exe" http://www.google.com
:s1
for /f "tokens=*" %%a in (`tasklist /FI "IMAGENAME eq firefox.exe" /FI "STATUS eq running"`) do (if "%%~a" EQU "INFO: No tasks are running which match the specified criteria." goto s2)
goto s1
:s2
echo step two
这应该工作
+0
这似乎让我更近了一步:脚本在Firefox打开时暂停,但当我关闭Firefox时,它似乎陷入了一个无限循环,它说:“系统找不到文件任务列表。” – Florian
哪一部分你不知道如何去适应?用'firefox'替换'writepad'。 –
嗨,肯。这就是我的尝试,但似乎没有做任何事情。 (看我上面的编辑。)任何想法? – Florian
不知道这是否会工作,但尝试使用'call'而不是'start'。我知道启动会在一个新的cmd实例中打开一个批处理文件,并且调用将在同一个实例中打开它。 –