我有一个嵌套的批处理结构。首先我从X.cmd开始,它调用X1.cmd然后调用X2.cmd。但是要求X2.cmd必须在X1.cmd完成其工作后才能正确启动。
目前,执行X1.cmd后,它不会继续使用X2.cmd。我想这是因为“开始”声明。 (好像它会破坏父窗口。)为了解决这个问题。我更改了结构,并在X1.cmd中调用了X2.cmd。但是这次问题是:X2.cmd在tst10.exe完成其工作之前启动,对我来说没用。 (虽然这很合乎逻辑。因为X1.cmd通过调用tst10.exe来完成前4行的执行并继续调用X2.cmd。但是因为我需要tst10.exe来完成它的工作所以对我来说没用。) p>
我需要能够检测到tst10.exe完成了它的工作,它的窗口被终止然后我必须调用X2.cmd。我怎样才能做到这一点?
这是我想要使用的结构:(在tst10.exe完成其工作后,X2.cmd必须完成它的工作)
的 X.cmd 的
X1.cmd
X2.cmd
的 X1.cmd 的
start tst10.exe /r:a.txt /o:a.txt
start tst10.exe /r:b.txt /o:b.txt
start tst10.exe /r:c.txt /o:c.txt
start tst10.exe /r:d.txt /o:d.txt
的 X2.cmd 的
start K.cmd
start L.cmd
start M.cmd
start N.cmd
答案 0 :(得分:2)
<强> x.cmd 强>
call x1.cmd
call x2.cmd
<强> x1.cmd 强>
start tst10.exe /r:a.txt /o:a.txt
start tst10.exe /r:b.txt /o:b.txt
start tst10.exe /r:c.txt /o:c.txt
start tst10.exe /r:d.txt /o:d.txt
:testloop
tasklist | find "tst10.exe" >nul || exit /b 0
ping -n 2 localhost > nul
goto testloop
<强> x2.cmd 强>
call K.cmd
call L.cmd
call M.cmd
call N.cmd
如果没有call
,执行将转移到被调用的批处理文件,并且不会返回给调用者。
答案 1 :(得分:1)
仅在x.cmd中使用start with wait参数来启动X1.cmd。 像那样: X.cmd 开始/等待X1.cmd