【问题标题】:Run multiple batch files asynchronously and calculate the overall time taken [duplicate]异步运行多个批处理文件并计算总时间[重复]
【发布时间】:2019-02-05 08:17:50
【问题描述】:

我有 6 个批处理文件,每个批处理文件都发出 curl 请求。我想异步运行这些文件。现在,我想计算所有脚本所花费的时间。即从启动脚本到最后一个脚本完成之间经过的时间。 我使用“START”命令从父脚本运行批处理脚本。 下面是父脚本的样子:

ECHO Start Measure %Time% >> timer.txt
start curl-1.bat
start curl-2.bat
start curl-3.bat
start curl-4.bat
start curl-5.bat
start curl-6.bat
ECHO Stop measure %Time% >> timer.txt

但是注册的时间只是那些 %Time% 语句执行时的时间。我相信这是因为“START”命令会启动单独的 shell,并且被调用的脚本不会返回。

使用“CALL”命令不会让我进行异步调用。因此,该选项被排除在外。 任何人都可以提出一种实现这一目标的方法吗?

【问题讨论】:

  • 谢谢。现在我尝试了 /b 选项。但它仍然给出了运行“回声”时的时间。
  • 啊好吧,我得到你想要的。将发布答案。
  • 看看this...

标签: batch-file curl time


【解决方案1】:

要做你想做的事,你需要用单个管道分隔命令:

echo Start Measure %Time%>>timer.txt
curl-1.bat | curl-2.bat | curl-3.bat | curl-4.bat | curl-5.bat | curl-6.bat
echo Stop measure %Time%>>timer.txt

然而,我会说宁愿将输出重定向到nul,因为在此过程中只有一个命令会显示在屏幕上,这可能看起来令人困惑:

echo Start Measure %Time%>>timer.txt
curl-1.bat>nul | curl-2.bat>nul | curl-3.bat>nul | curl-4.bat>nul | curl-5.bat>nul | curl-6.bat>nul
echo Stop measure %Time%>>timer.txt

【讨论】:

  • 嗨 Gerhard,我尝试了上面的脚本,其中批处理脚本调用重定向到 null。从响应中不清楚它是否在回显最后一个脚本完成后的时间。从那时起,它看起来不像。此外,尝试不使用重定向,脚本给出语法错误。
  • 你可以简单地测试一下时间是否有意义。创建2个批处理文件。 bat1.cmdbat2.cmdbat1.cmdping localhost -n 11 中执行 ping localhost -n 3 bat2.cmd 然后像上面一样运行它们。我们知道 bat1 大约需要 2 秒。 bat2 需要 10 秒,所以两个脚本从开始到结束的总时间应该是 10 秒,如果是这样的话,那就意味着它确实有效,对吧? :) 至于语法错误,请确保字符和管道之间没有缺少空格。这是一个简单的错字。
  • 哦,好的,谢谢!让我试试这个。 :)
猜你喜欢
  • 2010-11-29
  • 2012-12-18
  • 2021-05-07
  • 2021-07-05
  • 2013-09-16
  • 2012-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多