我有一个批处理文件,
bat1.bat
bat2.bat
但它在bat1结束时停止
任何线索?
答案 0 :(得分:40)
使用call
:
call bat1.cmd
call bat2.cmd
默认情况下,当您从另一个控件运行批处理文件时,控件不会传回给调用文件。这就是你需要使用call
。
基本上,如果您有这样的批次:
@echo off
echo Foo
batch2.cmd
echo Bar
然后它只会输出
Foo
如果你像
那样写@echo off
echo Foo
call batch2.cmd
echo Bar
然而,它将输出
Foo
Bar
因为在batch2
终止后,程序控制将传回原始批处理文件。
答案 1 :(得分:2)
如果bat1.bat异常停止(除了运行到最后,比如调用exit),就会发生这种情况,你可以通过使用新的cmd.exe来运行每个bat文件来解决这个问题:
start /b /wait bat1.bat
start /b /wait bat2.bat
如果你的bat文件中没有关注命令,你可以省略最后一个。
答案 2 :(得分:1)
要寻找的其他东西:
我有一个类似的问题,我使用call
命令调用多个批处理文件,但它没有将控件传回原始的.bat文件。
我发现在批处理文件的末尾有一个exit
命令关闭了DOS窗口,然后返回到原来的.bat
文件并完成那里的命令。
答案 3 :(得分:1)
为了一次运行多个.exe文件,首先需要创建.bat文件,然后添加所有.exe文件,如下所示:
D:\Data\Feed.exe Books.xml
D:\Data\Feed.exe Mobile.xml
D:\Data\Feed.exe Clothes.xml
然后另存为something.bat然后用cmd运行它。
答案 4 :(得分:1)
如果要按顺序运行批处理文件,则必须在每个文件的末尾添加“start bat1.bat”。