Robocopy 同时复制,然后执行其他批处理命令

Robocopy simultaneous copy after which other batch commands executed

del "%temp%\robocopy1.flag" "%temp%\robocopy2.flag" >nul
start /b cmd /c robocopy /s /mir D: E: ^& IF %ERRORLEVEL% lss 8 echo > "%temp%\robocopy1.flag" 
start /b cmd /c robocopy /s /mir D: E: ^& 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

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

del "%temp%\robocopy1.flag" "%temp%\robocopy2.flag" >nul
start /b cmd /c robocopy /s /mir F: F:\dest ^& IF %ERRORLEVEL% lss 8 echo ^>"%temp%\robocopy1.flag" 
start /b cmd /c robocopy /s /mir F: F:\dest ^& 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

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