我想问你所有如何在Windows中顺序运行批处理文件。 我试过了:
start /w batchfile_1.bat
start /w batchfile_2.bat
..
start /w batchfile_n.bat
但是我必须手动关闭之前的.bat文件进程(例如通过点击),然后继续进入下一个.bat文件进程。 有没有任何解决方案可以自动执行此操作而无需每次都手动关闭以前的.bat程序?
非常感谢。
答案 0 :(得分:17)
我会检查这个问题的解决方案:Run Multiple batch files
使用电话:
call bat1.cmd
call bat2.cmd
默认情况下,当您只是从另一个控件运行批处理文件时,控件将不会传回给调用文件。这就是你需要使用电话的原因。
基本上,如果您有这样的批次:
@echo off
echo Foo
batch2.cmd
echo Bar
然后它只会输出
Foo
如果你像
那样写@echo off
echo Foo
call batch2.cmd
echo Bar
然而,它将输出
Foo
Bar
因为在batch2终止后,程序控制将传回原始批处理文件。
答案 1 :(得分:3)
如果您喜欢使用START
,则可以使用EXIT
命令结束批处理文件。这将关闭start
命令创建的窗口。
@echo off
.
.
:: Inspired coding
.
.
exit
答案 2 :(得分:0)
我不确定,但根据您的评论,当您运行START
命令序列时,似乎会发生以下情况:
调用START /W
命令并启动批处理文件。
批处理文件开始执行并运行程序。
批处理文件完成,其控制台窗口仍然打开,但程序继续运行。
用于运行批处理文件的START /W
命令仍在执行,因为控制台窗口仍处于打开状态。
等到程序终止,然后关闭控制台窗口,然后调用下一个START /W
命令,一切都重复。
现在,如果将EXIT
放在要按顺序运行的每个批处理文件的末尾,这会使情况变得更糟,因为它会导致控制台窗口在批处理脚本完成后关闭,并且反过来结束相应的START /W
命令并导致另一个命令执行,即使批处理脚本调用的程序可能仍在运行。因此效果是批处理脚本(或者更确切地说,由它们执行的程序)同时运行而不是顺序执行。
我认为,如果可以解决这个问题,您需要移动START /W
命令并将其放在该批处理文件执行的(每个)命令前面的每个批处理文件中,并且不等待终止。也就是说,如果您的batchfile_1.bat
运行program.exe
,请将命令行更改为START /W program.exe
,对其他批处理文件中的其他相关命令也是如此。