【问题标题】:how to run multiple batch files in serial, in windows command line environment如何在 Windows 命令行环境中串行运行多个批处理文件
【发布时间】:2011-01-05 11:56:29
【问题描述】:

我有一个批处理文件,

bat1.bat
bat2.bat

但它在 bat1 结束时停止

有什么线索吗?

【问题讨论】:

标签: batch-file cmd


【解决方案1】:

使用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 终止后,程序控制权被传递回您的原始批处理文件。

【讨论】:

  • 第二个例子与第一个相同,但我明白了。完美运行
  • 我认为第二个示例缺少“呼叫”。
【解决方案2】:

如果 bat1.bat 异常停止(除了运行到最后,例如调用 exit)可能会发生这种情况,您可以通过使用新的 cmd.exe 运行每个 bat 文件来解决此问题:

start /b /wait bat1.bat
start /b /wait bat2.bat

如果你的 bat 文件中没有后续命令,你可以省略最后一个。

【讨论】:

  • 不,如果批处理正常终止,也会发生这种情况。不过,在这里使用start 有点过头了。并且您需要在子批次结束时额外添加一个 exit 来终止生成的 cmd 进程。否则你会在第一批运行后发现自己在一个新的控制台上。
【解决方案3】:

为了一次运行多个 .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】:

    要寻找的其他东西:

    我有一个类似的问题,我正在使用call 命令调用多个批处理文件,但它没有将控制权传递回原始 .bat 文件。

    我发现我在批处理文件的末尾有一个exit 命令,它关闭了 DOS 窗口,然后返回到原始的.bat 文件并在那里完成命令。

    【讨论】:

      【解决方案5】:

      如果要按顺序运行批处理文件,则必须在每个文件的末尾添加“start bat1.bat”。

      【讨论】:

        猜你喜欢
        • 2017-11-30
        • 2016-04-27
        • 2013-02-27
        • 1970-01-01
        • 1970-01-01
        • 2015-11-15
        • 1970-01-01
        • 1970-01-01
        • 2010-11-29
        相关资源
        最近更新 更多