【问题标题】:nesting multiple .cmd files with prerequisites running in a certain order [duplicate]嵌套多个.cmd文件,先决条件按一定顺序运行[重复]
【发布时间】:2020-05-27 17:39:39
【问题描述】:

我无法弄清楚这背后的逻辑。我有 11 个.cmd 文件需要按特定顺序运行。其中5个可以同时启动,后5个直接依赖前5个对应,最后一个文件依赖于第二组5个运行。

工作流程图片:

  • 第 1 步是启动 QAQC 进程 1-5。
  • 第 2 步是在每个 QAQC 进程完成时启动相应的 CONVERT 进程。
  • 第 3 步是在所有 5 个CONVERT 进程完成后合并所有输出。

我想我需要为每个文件创建一个 .cmd.bat 文件,然后在一个文件中调用这 5 个文件。

file1.cmd:

 call QAQC1
 call CONVERT1

file2.cmd:

call QAQC2
call CONVERT2

等等……

最终文件会是这样的:

FINAL_FINAL.cmd:

start "QAQC1.cmd" QAQC1.cmd
start "QAQC2.cmd" QAQC2.cmd
start "QAQC3.cmd" QAQC3.cmd
start "QAQC4.cmd" QAQC4.cmd
start "QAQC5.cmd" QAQC5.cmd 

我仍然不清楚这是否正确,或者在调用将所有内容合并在一起并需要所有 10 个其他文件完成的最终文件之前,我将如何完成所有这些步骤。任何帮助将不胜感激!

【问题讨论】:

  • 第 2 步 (CONVERT) 是否必须等到第 1 步 (QAQC) 完成,这意味着所有五个 QAQC 进程必须在第一个 @987654340 之前完成@进程开始?我还想知道您如何将数据从QAQC 步骤传递到CONVERT 步骤...
  • 也许可以使用一个批处理文件QAQC 并使用五组不同的命令行参数而不是五个类似的文件来配置它,因为所有@的内部函数都是相同的987654344@ 进程,CONVERT 也一样...
  • 也许这个帖子处理的情况非常相似:Start multiple tasks in parallel and wait for them in windows?
  • @aschipfl - 并非所有 QAQC 流程都必须在第一个 CONVERT 流程之前完成。只是对应的。因此,如果 QAQC3 在 QAQC1 或 QAQC2 之前完成,则 CONVERT 3 可以运行。每个 CONVERT 步骤仅依赖于其对应的 QAQC 步骤。所有 QAQC 流程可以同时开始。数据在每一步都写入要素类,既用于记录保存目的,也用于将数据发送回原始所有者(并且因为我的老板这样要求)。红线表示每个步骤的依赖关系。

标签: windows batch-file cmd parallel-processing


【解决方案1】:
@echo off
setlocal enabledelayedexpansion
for /l %%a in (1,1,5) do (
  set /a x=!random! %% 10
  >QAQC%%a.cmd (
    echo @echo QAQC%%a
    echo @timeout !x!
  )
  >CONVERT!%%a.cmd (
    echo @echo CONVERT%%a
    echo @timeout !x!
  )
)
echo @echo merge running >merge.cmd
echo @timeout 3 >>merge.cmd
REM ignore anything before this line; it just creates a test environment

@echo off
echo wait for qaqcX and convertX to finish...
( start cmd /c "qaqc1.cmd & convert1.cmd"
  start cmd /c "qaqc2.cmd & convert2.cmd"
  start cmd /c "qaqc3.cmd & convert3.cmd"
  start cmd /c "qaqc4.cmd & convert4.cmd"
  start cmd /c "qaqc5.cmd & convert5.cmd"
) | pause >nul
call merge.cmd
echo done.

【讨论】:

  • 你能给我解释一下第一部分吗?它到底在做什么?我在没有它的情况下运行了代码,它运行起来也一样,有必要吗?无论哪种方式,这都完美无缺。谢谢!!!
  • REM之前的部分?它只是生成一些假的QAQC*.cmdconvert*.cmd 文件加上一个假的merge.cmd 来运行一些东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-03
  • 1970-01-01
  • 1970-01-01
  • 2021-09-08
  • 2015-03-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多