6

我想运行一个批处理文件,启动其他批处理文件。我查看了此处发布的类似问题:如何在 .BAT 文件中运行多个 .BAT 文件

我遵循了这个例子(特别是最后一个建议)并且它工作了......部分。它确实启动了我需要的批处理文件。但是,为了使应用程序正常运行,必须打开其中一些批处理文件,然后运行它们的程序几秒钟,然后再启动下一个批处理文件,否则它们将不会被注册。具体来说,第一个批处理文件启动一个 Web 应用程序服务器 (JBOSS 5.1),然后下一个批处理文件打开一个池管理器,然后其他两个启动分发服务器。当我运行调用其他批处理文件时,它们几乎同时启动,并且它们不相互注册。我什至可以用批处理文件来做到这一点吗?还是我必须进入其他批处理文件的代码并在那里进行更改?我想不惜一切代价避免这种情况。

这是我到目前为止所拥有的:

start cmd /k CALL D:\jboss-5.1.0.GA-jdk6\jboss-5.1.0.GA\bin\run.bat

start cmd /k CALL batch1.bat

start cmd /k CALL batch2.bat

start cmd /k CALL batch3.bat
4

4 回答 4

6

您可以删除start cmd /k并使用CALL.

CALL D:\jboss-5.1.0.GA-jdk6\jboss-5.1.0.GA\bin\run.bat
CALL batch1.bat
CALL batch2.bat
CALL batch3.bat
于 2012-12-21T19:48:32.117 回答
4

回答:

/wait选项添加到启动命令。

WAIT        Start application and wait for it to terminate.

例子:

start /wait cmd /k CALL D:\jboss-5.1.0.GA-jdk6\jboss-5.1.0.GA\bin\run.bat

start /wait cmd /k CALL batch1.bat

start /wait cmd /k CALL batch2.bat

start /wait cmd /k CALL batch3.bat

否则,只需在开始之间使用 ping 延迟。(见user706837的回答)

参考:

Technet, Rob, SS64,DosTips

于 2012-12-21T17:54:40.780 回答
1

每当我有依赖于另一个的批处理文件时,我要么: 1. 嵌套它们;意思是,如果batch1 需要在batch2 之前运行,那么我在batch1 中添加batch2。2. 在 batch2 中打一个“睡眠”电话。这只有在您相当确定 batch1 的启动持续时间时才有可能。

一个示例睡眠命令是:

ping 127.0.0.1 -n 4 > null

这将使批处理文件等待 3 秒。(因为在 4 个回声中的每一个之间只有 3、1 秒的睡眠)

例子:

start cmd /k CALL D:\jboss-5.1.0.GA-jdk6\jboss-5.1.0.GA\bin\run.bat
ping 127.0.0.1 -n 4 > null
start cmd /k CALL batch1.bat
ping 127.0.0.1 -n 4 > null
start cmd /k CALL batch2.bat
ping 127.0.0.1 -n 4 > null
start cmd /k CALL batch3.bat
于 2012-12-21T17:25:28.683 回答
1
There are multiple ways for that.

1.

rem echo call A

CALL a.bat

rem echo call B

CALL b.bat

rem echo call C

CALL c.bat

rem pause

--------------------

2.

echo call A

start cmd /k CALL a.bat


echo call B

start cmd /k CALL b.bat

echo call C

start cmd /k CALL c.bat

pause

---------------------

Here the difference is-

start cmd /k

   It creates these many instances. So we can see multiple number of CMD prompts.


CALL

   Each descendent CALL waits for the completion of the previous CALL.
于 2018-01-19T11:04:26.427 回答