2015-04-22 109 views
1

我有一個看似微不足道的問題,但無法弄清楚。我正在編寫一個批處理腳本,該腳本用特定的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實例中打開一個批處理文件,並且調用將在同一個實例中打開它。 –

回答

-1

哦,我的上帝!我剛剛解決了我自己的問題。它是如此簡單:

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

我會去和現在一個角落裏哭了...

+0

這不是firefox或chrome的工作方式,當你運行可執行文件時,它會創建一個進程,然後可執行文件退出,從而導致批處理文件繼續。 – Monacraft

+0

傻瓜或不傻,它似乎對我沒有任何問題。 – Florian

1

試試這個:

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

相關問題