代码之家  ›  专栏  ›  技术社区  ›  Nick

如何在Windows命令行环境中串行运行多个批处理文件

  •  22
  • Nick  · 技术社区  · 16 年前

    我有一个批处理文件,

    bat1.bat
    bat2.bat
    

    但它在BAT1结束时停止

    有什么线索吗?

    5 回复  |  直到 8 年前
        1
  •  40
  •   Joey Gumbo    16 年前

    使用 call :

    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 终止,程序控制返回到原始批处理文件。

        2
  •  2
  •   x4u    16 年前

    如果bat1.bat异常停止(而不是运行到末尾,比如调用exit),则可能发生这种情况,您可以使用一个新的cmd.exe来运行每个bat文件:

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

    如果您的BAT文件中没有命令,您可以在最后一个命令中省略它。

        3
  •  1
  •   Austin Henley    14 年前

    为了一次运行多个.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
  •   newfurniturey    14 年前

    其他需要查找的内容:

    我有一个类似的问题,我使用 call 命令,但它没有将控件传递回原始的.bat文件。

    我发现我有一个 exit 命令位于批处理文件的末尾,该批处理文件在返回原始文件之前关闭了DOS窗口。 .bat 在那里归档并完成命令。

        5
  •  1
  •   john calhoun    8 年前

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

    推荐文章