如何在程序关闭之前“暂停”批处理脚本?

问题描述:

我有一个看似微不足道的问题,但无法弄清楚。我正在编写一个批处理脚本,该脚本用特定的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 

但仍然产生相同的行为。 :■

+0

哪一部分你不知道如何去适应?用'firefox'替换'writepad'。 –

+0

嗨,肯。这就是我的尝试,但似乎没有做任何事情。 (看我上面的编辑。)任何想法? – Florian

+0

不知道这是否会工作,但尝试使用'call'而不是'start'。我知道启动会在一个新的cmd实例中打开一个批处理文件,并且调用将在同一个实例中打开它。 –

哦,我的上帝!我刚刚解决了我自己的问题。它是如此简单:

echo step one 
"C:\Program Files (x86)\Mozilla Firefox\firefox.exe" http://www.google.com 
echo step two 

我会去和现在一个角落里哭了...

+0

这不是firefox或chrome的工作方式,当你运行可执行文件时,它会创建一个进程,然后可执行文件退出,从而导致批处理文件继续。 – Monacraft

+0

傻瓜或不傻,它似乎对我没有任何问题。 – Florian

试试这个:

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