2012-09-13 130 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是否仍然有效。