我试图创build一个脚本来执行closures的exe文件,以便安装sp1。 我的脚本就像(不是实际的蝙蝠脚本)。
If installed GOTO END Install.exe END:
我的问题是,当它运行时,它启动安装程序,然后完成脚本,因为安装程序是一个不同的过程,并通过closures安装过程后续,因为计算机closures和closures系统(至less,这就是我认为这是做的。)
有什么办法可以告诉它等到它开始的进程完成然后closures?
尝试运行
START /WAIT Install.exe
一个简短的方法:
Install.exe|more
也
install|rem
可以使用,但最终你可以捕捉到一些控制台输出。 这就是它工作的原因 – pipe道命令等待input,直到.exe完成
要么直接从batch file调用exe或使用start /wait
将工作,但有一个警告。
如果您调用的exe然后创build其他进程,如调用另一个exe,然后退出该batch file将继续处理被调用的exe后终止,因为它不知道其启动的其他进程。
在你的情况下,这是一个真正的问题,因为安装程序通常从某种forms的压缩容器中提取文件,这些压缩容器可能会embedded到exe文件中,然后将提取的文件中的一个文件解压并退出。 一些安装程序提供的命令行参数告诉原始exe文件不要退出,直到整个安装完成,所以这是你可能想要调查的东西。 除此之外,单独使用batch file并没有真正的解决方法,需要编程解决scheme来解决。
这里是一个使用MATLAB的例子! 我假定MATLAB的path设置已完成,并且正在通过FileName.m文件(或者用户在内部指定它)确保MATLAB退出。
echo off matlab -nosplash /r "FileName.m" :loop tasklist /fi "imagename eq MATLAB.exe" |find ":" > nul if errorlevel 1 goto loop exit
您可以使用start / wait命令。 这启动一个应用程序,并等待它结束。
或者,如果您知道需要执行多长时间,则可以查看由Windows Server 2003资源工具包工具提供的sleep命令。 可以使用Sleep.exe暂停您的批处理任意秒数以允许程序在batch file继续安装其他任何内容之前完全安装。 有一些程序忽略了“启动/等待”语法,由于程序本身启动了另一个进程,那么sleep.exe是非常有用的。