我想制作一个批处理文件,分别运行3个可执行文件:A.exe B.exe C.exe
PS:A.exe 必须完成其工作,然后批处理文件转到 B.exe,最后转到 C.exe
答案1
三行批处理文件即可完成此操作。例如,名为mybatch.bat
...的批处理文件
START /wait notepad.exe
START /wait sol.exe
START /wait thirdExecutable.exe
该/wait
参数也可以替换为/w
,并指示批处理脚本等到可执行文件终止后再继续下一阶段。因此,您可以选择不在第三行使用此参数。这样做只会导致窗口cmd
保持打开状态,直到第三个可执行文件终止。
编辑地址评论:恐怕这对我来说有用。您可能还需要确保将可执行文件替换为可执行文件的确切路径 - 例如,如果 A.exe 位于C:\MyFolder\
,则您可以将第一行修改为START /wait C:\MyFolder\A.exe
。如果可执行文件位于环境变量中引用的任何文件夹中或与批处理文件位于同一文件夹中,则不需要这样做%PATH%
。我不认为这是你的问题。
我想知道cmd
批处理打开的这三个窗口是否确实是您想要运行的可执行文件?批处理文件打开的主窗口将回显它发出的命令,并且还会显示它是否无法执行给出的命令。如果您没有收到弹出错误警报,则表示您的批处理文件正在查找并成功运行您指定的这三个可执行文件。
正如我提供的链接所述,您还可以使用参数/minimized
(或等效参数/m
)来/wait
执行默认最小化的文件。这可能会让事情变得更整洁,看起来就像您期望的那样。
就目前情况而言,我认为是完全按照预期工作。无论如何,正如您所描述的那样。
第二次编辑:鉴于您的批处理文件,我对其进行了一些必要的小改动,以便它能够执行您想要的操作。我实际上不知道您想在一开始就回显什么,但它应该会显示足够的信息。
ECHO "programs are processing...."
ECHO "First Phase"
START /w "C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\vsvars32.bat"
ECHO "Second Phase"
START /w "C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"
ECHO "Final phase"
START /w "C:\Program Files\OPNET\16.0.A\sys\pc_intel_win32\bin\modeler.exe"
这能按预期工作吗?
最后编辑:如果您需要在某个没有权限修改的地方运行此批处理文件,您可以绕过环境变量。
ECHO "programs are processing...."
ECHO "First Phase"
C:
cd "\Program Files\Microsoft Visual Studio 9.0\VC\bin
START /w vsvars32.bat
ECHO "Second Phase"
cd ..
START /w vcvarsall.bat
ECHO "Final phase"
cd "\Program Files\OPNET\16.0.A\sys\pc_intel_win32\bin"
START /w modeler.exe
这似乎解决了我的问题。虽然丑陋不堪,但批处理文件似乎从来都不是内在的美...