我目前有一个批处理脚本,我用它来将一个大型zip文件从网络文件夹复制到网络上的多台机器上.我需要并行执行这些副本,所以我有一个遍历地址的for循环并运行启动robocopy.这就是我所拥有的
for /F "tokens=*" %%A in (IPlist.txt) do (
start robocopy "\\networkfolder" \\%%A
)
问题是我需要在我刚复制到的所有机器上执行提取,但我需要等到机器人完成后再进行.我不能在for循环中使用start / wait,因为它会破坏并行副本.有没有办法可以强制脚本等到所有的机器人都完成了?或者可能是替代解决方案?
仅供参考:我无法首先在网络文件夹中提取,因为zip是很多小文件并且严重降低了传输速率.通过网络复制时,它需要是一个大文件.
最佳答案
setlocal EnableDelayedExpansion
set number=0
for /F "tokens=*" %%A in (IPlist.txt) do (
set /A number+=1
echo Flag > roboRunning.!number!
start robocopy "\\networkfolder" \\%%A ^& del roboRunning.!number!
)
:wait
if exist roboRunning.* goto wait
echo All robocopy processes have finished here