Robocopy同时执行其他批处理命令后的副本

问题描述 投票:0回答:1
del "%temp%\robocopy1.flag" "%temp%\robocopy2.flag" >nul
start /b cmd /c robocopy /s /mir D:\1 E:\1 ^& IF %ERRORLEVEL% lss 8 echo > "%temp%\robocopy1.flag" 
start /b cmd /c robocopy /s /mir D:\1 E:\2 ^& IF %ERRORLEVEL% lss 8 echo > "%temp%\robocopy2.flag" 
:wait
timeout 5
if not exist "%temp%\robocopy1.flag" goto wait
if not exist "%temp%\robocopy2.flag" goto wait
pause
echo success
batch-file robocopy
1个回答
0
投票

使用cmd /c^&将检查与robocopy结合起来并使用临时文件,因为在父进程中不会看到变量:

del "%temp%\robocopy1.flag" "%temp%\robocopy2.flag" >nul
start /b cmd /c robocopy /s /mir F:\1 F:\dest\1 ^& IF %ERRORLEVEL% lss 8 echo ^>"%temp%\robocopy1.flag" 
start /b cmd /c robocopy /s /mir F:\1 F:\dest\2 ^& IF %ERRORLEVEL% lss 8 echo ^>"%temp%\robocopy2.flag" 

:wait
timeout 1 >nul
if not exist "%temp%\robocopy1.flag" goto wait
if not exist "%temp%\robocopy2.flag" goto wait

rem final robocopy

注意:^防止在自动复制之前立即执行if,并将&传递给cmd /c,以便第二个命令将在自动复制后由启动的命令处理器cmd执行。

© www.soinside.com 2019 - 2024. All rights reserved.