嵌套批处理结构执行终止

时间:2014-01-29 08:47:39

标签: windows batch-file cmd batch-processing

我有一个嵌套的批处理结构。首先我从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

2 个答案:

答案 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