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”
:等待
超时5
如果不存在“%temp%\ robocopy1.flag”转到等待
如果不存在“%temp%\ robocopy2.flag”转到等待
暂停
回声成功
答案 0 :(得分: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
注意:^
阻止在robocopy之前立即执行if
并将&
传递给cmd /c
,以便第二个命令将由启动的命令处理器{{1}执行在robocopy之后。