2012-09-13 162 views
0

的順序有什麼不對下面的代碼,這是爲了只報告採取某些措施,如果返回乾淨:DOS級聯命令優先

echo Other operations here & (echo Trying to launching Firefox & "%ProgramFiles(x64)%"\Mozilla\Firefox\Firefox.exe && echo Firefox has closed successfully) & echo More operations that should be done regardless here 

回答

0

對不起,這個語法可行,還有其他問題,我沒有意識到周圍的代碼。不要以爲任何人都知道調試DOS「腳本」的更好方法,它幾乎和VBS的錯誤信息一樣糟糕!

+0

「更好」的方式?允許「更好」是一個相當主觀的措施;除非將所有內容放在一行中使代碼更具可讀性,否則我認爲將代碼分割成單獨的行會更好。任何'&&'和'||'對正確使用的反應都會使用可以通過'%errorlevel%'變量訪問的退出代碼。請記住,編程不是Golf,儘管最短代碼可能是更高效的代碼,但如果您(或任何其他人維護它)稍後無法理解它,高效代碼將毫無價值,因此它可以適應不斷變化的需求。 –

+0

Hi @JamesK - 同意,更好的是主觀的,但是我的調試困難並不侷限於當我決定在一行上連接命令的時候。感謝您指出錯誤級別,應該自己想一想:(關於您關於單行命令的觀點,是的,它不易於維護,也不易於其他人理解,但此項目的意圖是隻有我將保持它,所以這些完全有效的點*應該*超出專業人士,IMO。 – user66001

1

我相信你的語法是正確的,但你的期望是錯誤的。

您正在啓動一個Windowed應用程序 - 您的命令不會等待Firefox進行之前關閉。您的代碼可能正確報告Firefox已啓動。只有在Firefox未能啓動啓動(也許它不存在於機器上)時,纔會繞過您的條件代碼。

通常,如果您想要啓動Windowed應用程序並等待它完成(關閉),然後再繼續,那麼您將使用START/WAIT。

echo previous command & (start /wait "" yourApp.exe && echo successful closure) & echo additional commmands 

但是,我不確定它是否適用於Firefox等瀏覽器。許多瀏覽器由多個可執行文件組成。啓動的可執行文件可能會啓動輔助進程,然後關閉。即使瀏覽器仍在運行,您的命令也會高興地報告啓動的exe會成功返回。再說一遍,我不確定Firefox是否像這樣。但是,如果這樣做,那麼問題變得更加困難。您將不得不運行一個輪詢過程來查看Firefox是否仍然有效。