如何在单个“#master”的不同位置同时运行多个批处理文件?批处理文件?

时间:2016-06-02 15:11:05

标签: windows batch-file cmd

这些不同的批处理文件在单独执行时运行正常,但为了方便起见,我一直试图从一个位置一次执行它们,以免我浏览许多不同的子文件夹来逐个执行它们。

我原本以为我的第一次测试尝试会有一些批处理文件可以使用:

    CALL "C:\Steam\steamapps\common\Sins of a Solar Empire Rebellion\GameInfo\Sins_text_to_bin.bat"
    CALL "C:\Steam\steamapps\common\Sins of a Solar Empire Rebellion\Mods-Rebellion v1.83\Enhanced 4X Mod - Git Clone\GameInfo\Sins_text_to_bin.bat"
    CALL "C:\Steam\steamapps\common\Sins of a Solar Empire Rebellion\Mods-Rebellion v1.83\Star Wars Interregnum - Git Clone\GameInfo\Sins_text_to_bin.bat"

但是当我运行时,除了cmd窗口出现一瞬间然后关闭之外没有任何事情发生,没有执行任何引用的批处理文件。

经过多次尝试,唯一有效的是:

    cd "C:\Steam\steamapps\common\Sins of a Solar Empire Rebellion\GameInfo"
    CALL "Sins_text_to_bin.bat"
    cd "C:\Steam\steamapps\common\Sins of a Solar Empire Rebellion\Mods-Rebellion v1.83\Enhanced 4X Mod - Git Clone\GameInfo"
    CALL "Sins_text_to_bin.bat"
    cd "C:\Steam\steamapps\common\Sins of a Solar Empire Rebellion\Mods-Rebellion v1.83\Star Wars Interregnum - Git Clone\GameInfo"
    CALL "Sins_text_to_bin.bat"

但是这并不会同时运行批处理文件;相反,它会一个接一个地执行它们。

我知道我可能在这里缺少一些基本的东西,但我几乎是一个文盲的人,有这样的东西,所以请善待;)

3 个答案:

答案 0 :(得分:1)

以下命令可以满足您的期望。 'master'批处理文件看起来像

START "C:\Steam\steamapps\common\Sins of a Solar Empire Rebellion\GameInfo\Sins_text_to_bin.bat" CALL "C:\Steam\steamapps\common\Sins of a Solar Empire Rebellion\GameInfo\Sins_text_to_bin.bat"
START "C:\Steam\steamapps\common\Sins of a Solar Empire Rebellion\Mods-Rebellion v1.83\Enhanced 4X Mod - Git Clone\GameInfo\Sins_text_to_bin.bat" CALL "C:\Steam\steamapps\common\Sins of a Solar Empire Rebellion\Mods-Rebellion v1.83\Enhanced 4X Mod - Git Clone\GameInfo\Sins_text_to_bin.bat"
START "C:\Steam\steamapps\common\Sins of a Solar Empire Rebellion\Mods-Rebellion v1.83\Star Wars Interregnum - Git Clone\GameInfo\Sins_text_to_bin.bat" CALL "C:\Steam\steamapps\common\Sins of a Solar Empire Rebellion\Mods-Rebellion v1.83\Star Wars Interregnum - Git Clone\GameInfo\Sins_text_to_bin.bat"

答案 1 :(得分:1)

call命令意味着执行它,等到它完成后再继续 到start命令意味着,在另一个cmd实例中执行它并继续而不等待它完成。

因此,如果您想并行执行多个程序,则应使用start。第一个引用的参数是新实例的标题(可以为空:"")。 /D参数提供了一个工作目录。必须引用带空格的文件名/路径。所以最后一行看起来像是:

start "title" /d "<my folder>" "<my program>"

或在你的情况下:

start "" /D "C:\Steam\steamapps\common\Sins of a Solar Empire Rebellion\GameInfo" "C:\Steam\steamapps\common\Sins of a Solar Empire Rebellion\GameInfo\Sins_text_to_bin.bat"

答案 2 :(得分:0)

我找到了解决方案!

我在第二个代码窗口中发布的上述“半工作”的尝试很接近。似乎以这种方式使用call命令会强制第一批处理在下一个批处理开始之前完成。

如果您希望所有引用的批处理文件像我一样同时执行,那么start而不是call命令将起作用:

   cd "\directory\bat1\"
   start bat1.bat
   cd "\directory\bat2\"
   start bat2.bat
   cd "\directory\bat3\"
   start bat3.bat

在我的特定情况下使用我之前的示例尝试看起来像这样:

    cd "C:\Steam\steamapps\common\Sins of a Solar Empire Rebellion\GameInfo"
    start Sins_bin_to_text.bat
    cd "C:\Steam\steamapps\common\Sins of a Solar Empire Rebellion\Mods-Rebellion v1.83\Enhanced 4X Mod - Git Clone\GameInfo"
    start Sins_bin_to_text.bat
    cd "C:\Steam\steamapps\common\Sins of a Solar Empire Rebellion\Mods-Rebellion v1.83\Star Wars Interregnum - Git Clone\GameInfo"
    start Sins_bin_to_text.bat