如何一个接一个地调用一个批处理文件

时间:2011-03-30 18:29:38

标签: batch-file cmd

我有一个我正在测试的批处理文件,我想要做的就是以下

CALL ping.bat

然后在该批处理文件运行之后我想运行另一个文件:

CALL ping2.bat

现在我在批处理文件中将这两行放在一起,第一批文件将成功触发,但第二批文件不会。有什么建议吗?

CALL ping.bat
CALL ping2.bat

Ping .bat就是:

ping 127.0.0.1    

6 个答案:

答案 0 :(得分:18)

检查第一批中的某个地方是否有exit。有些人习惯性地使用它来跳出批处理文件,这不是退出批处理的正确方法(exit /bgoto :eof是)。

另一个选择是您可以在第一个中调用另一个批次而不 call

答案 1 :(得分:6)

如果您的ping.bat内容仅仅是ping 127.0.0.1,那么您.exe可能只是在呼唤自己。

我会在ping之后附加{{1}}以确保确定。

正如 jeb 所提出的那样,为批处理文件选择不同的名称是一个更好的解决方案。

答案 2 :(得分:5)

假设您有3个批处理文件。

  1. ping1.bat,其内容为ping 127.0.0.1
  2. ping2.bat,其内容为ping 127.0.0.1
  3. ping3.bat,其中包含以下两行 打电话给ping1.bat
    叫ping2.bat
  4. 如果您将所有三个批处理文件放在一个文件夹中(假设在C:\ NewFolder下) 然后,如果你双击ping3.bat,你肯定不会得到任何错误。

    注意:如果您不想等待第一个命令完成,请使用start关键字启动该过程并继续批处理文件中的下一行,而调用 将按顺序执行(仅在当前进程完成后进入下一行,启动允许并行) 要做到这一点并行使用ping3.bat中的以下两行代码:

    启动ping1.bat
    启动ping2.bat

答案 3 :(得分:2)

不要从批处理中调用您正在调用的文件与您尝试调用的命令相同的名称...重命名为gnip.bat并且工作正常

答案 4 :(得分:2)

不完全确定你想在这里做什么,但我认为你想要这样做:

  1. 运行FIRST.bat
  2. 来自FIRST.bat,你想打电话给SECOND.bat
  3. 当SECOND.bat正在执行时,FIRST.bat应该保持暂停状态
  4. 在SECOND.bat完成执行后,FIRST.bat应该恢复并调用THIRD.bat
  5. 在这种情况下,您应该从实际的批处理文件中启动 ping.bat ping2.bat ,如下所示:

    ::some code here
    start /wait ping.bat
    start /wait ping2.bat
    ::some code here
    

    然后在 ping.bat ping2.bat 中,最后一行应为退出。他们的代码应如下所示:

    ::some code here, might be ping 127.0.0.1
    exit
    

    现在您的实际批处理文件将启动 ping.bat ,它将等待它完成(退出)。一旦 ping.bat 关闭,您的实际批处理文件将转到下一行,它将启动 ping2.bat 等。

答案 5 :(得分:0)

ping命令在不同的操作系统上的行为方式不同。尝试使用-n开关强制ping命令在几个echo请求后停止。

ping -n 4 127.0.0.1