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

时间:2015-08-23 17:34:35

标签: batch-file robocopy

  

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”转到等待

     

暂停

     

回声成功

1 个答案:

答案 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之后。