【Azure Batch】在批处理的Task中如何让它执行多个CMD指令呢

问题描述

根据Azure Batch的入门文档(使用 Azure 门户创建 Batch 帐户并运行作业 : https://docs.azure.cn/zh-cn/batch/quick-create-portal),创建了Batch Account, Pool, Job, Task. 并且成功运行。

这时候,想要在Batch的Task中执行多个CMD指令,尝试写多行执行。类似如下:

复制代码
cmd /c  "echo %date% %time%"
cmd /c "set AZ_BATCH & timeout /t 90 > NUL"
cmd /c "timeout /nobreak /t 50"
cmd /c "echo 'what is your name?'"
cmd /c "echo %date% %time%"

测试发现,只是执行了第一行指令。那么,如何在Task中执行多个CMD指令呢?

问题解答

其实就是要考虑如何让CMD执行多次指令,所以可以使用" & "连接符。

若要对 <string> 使用多个命令,请用命令分隔符 && 分隔它们。 例如:

<command1>&&<command2>&&<command3>

修改后的指令为:

复制代码
cmd /c  "echo %date% %time% & set AZ_BATCH & timeout /t 90 > NUL & timeout /nobreak /t 10 & echo 'what is your name?' & echo %date% %time% & for %I in (1,2,3,4,5,6) do echo '%time%'   "

本地执行效果:

Azure Batch Task执行效果:

参考资料

cmd : https://learn.microsoft.com/zh-cn/windows-server/administration/windows-commands/cmd#remarks

快速入门:使用 Azure 门户创建 Batch 帐户并运行作业 : https://docs.azure.cn/zh-cn/batch/quick-create-portal