4

現在、1 つの大きな zip ファイルをネットワーク フォルダーからネットワーク上の複数のマシンにコピーするために使用しているバッチ スクリプトがあります。これらのコピーを並行して行う必要があるため、アドレスを介して実行され、robocopy の開始を実行する for ループがあります。これが私が持っているものです

for /F "tokens=*" %%A in (IPlist.txt) do (

    start robocopy "\\networkfolder" \\%%A
)

問題は、コピーしたばかりのすべてのマシンで抽出を実行する必要があることですが、ロボコピーが完了するまで待つ必要があります。並列コピーが破棄されるため、 for ループで start /wait を使用できません。すべてのロボコピーが完了するまでスクリプトを強制的に待機させる方法はありますか? それとも代替ソリューションですか?

参考までに: zip は多数の小さなファイルであり、転送速度が大幅に低下するため、最初にネットワーク フォルダーに展開することはできません。ネットワーク経由でコピーする場合、1 つの大きなファイルである必要があります。

4

3 に答える 3

0
SETLOCAL EnableDelayedExpansion
SET num=0
FOR /F "tokens=*" %%A in (IPlist.txt) do (
    SET /A num+=1
    ECHO Flag > RoboRunNum.!num!
    START robocopy "\\networkfolder" \\%%A ^& del RoboRunNum.!num!
)

:Check
if exist RoboRunNum.* GOTO CHECK

echo Robocopy Processes fave Finished
于 2014-03-13T00:52:16.293 に答える