想请教大家如何在Windows中按顺序运行批处理文件。我努力了 :
start /w batchfile_1.bat
start /w batchfile_2.bat
..
start /w batchfile_n.bat
但我必须手动关闭前一个 .bat 文件进程(例如通过单击),然后才能继续下一个。是否有任何解决方案可以自动执行此操作,而无需我每次都手动关闭以前的 .bat 程序?
非常感谢。
想请教大家如何在Windows中按顺序运行批处理文件。我努力了 :
start /w batchfile_1.bat
start /w batchfile_2.bat
..
start /w batchfile_n.bat
但我必须手动关闭前一个 .bat 文件进程(例如通过单击),然后才能继续下一个。是否有任何解决方案可以自动执行此操作,而无需我每次都手动关闭以前的 .bat 程序?
非常感谢。
我会检查这个问题的解决方案:运行多个批处理文件
使用调用:
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 终止后,程序控制权被传递回您的原始批处理文件。
如果你喜欢使用START
,你可以让你的批处理文件以EXIT
命令结尾。这将关闭该start
命令创建的窗口。
@echo off
.
.
:: Inspired coding
.
.
exit
我不确定,但根据您的评论,当您运行该START
命令序列时,似乎会发生以下情况:
START /W
调用命令并启动批处理文件。
批处理文件开始执行并运行程序。
批处理文件完成,其控制台窗口保持打开状态,但程序继续运行。
用于运行批处理文件的START /W
命令仍在执行,因为控制台窗口仍然打开。
您等到程序终止,然后关闭控制台窗口,然后START /W
调用下一个命令,一切都将重复。
现在,如果您将EXIT
要按顺序运行的每个批处理文件放在末尾,这会使情况变得更糟,因为它会导致控制台窗口在批处理脚本完成后关闭,进而结束相应的START /W
命令并导致另一个命令执行,即使批处理脚本调用的程序可能仍在运行。所以效果是批处理脚本(或者更确切地说,由它们执行的程序)同时运行而不是顺序运行。
我认为,如果可以完全解决这个问题,您需要移动START /W
命令并将其放在该批处理文件执行的(每个)命令前面的每个批处理文件中,并且不等待终止。也就是说,如果您batchfile_1.bat
运行 a program.exe
,请将命令行更改为START /W program.exe
,对于其他批处理文件中的其他相关命令,同样如此。