@echo offset "srcDir=D:\System\桌面\BatDir\zsrc" set "dstDir=D:\System\桌面\BatDir\zdst"REM robocopy 返回值为 1,不一定代表 "没有发生任何拷贝",而是"所有文件都已同步,最终一致" REM robocopy "%srcDir%" "%dstDir%" /e /njh /njs /np /ns /nc /r:1 /w:1 REM /MIR 等价 /E /PURGE 让目标目录和源目录完全一致,自动删除目标目录多余的文件和文件夹 robocopy "%srcDir%" "%dstDir%" /E /R:1 /W:1 /MT:16 /NP /XF *.tmp *.bak /XD dload logs /LOG:robocopy_log.txt /TEE if %errorlevel% leq 1 (echo 所有内容都已同步,最终一致 ) else (echo 有同步操作,或者有错误,请检查日志。 )setlocal enabledelayedexpansionset "needCopy=0" for /f "delims=" %%i in ('dir /b /s /a "%srcDir%%"') do (set "fullSrcPath=%%i"set "relPath=!fullSrcPath:%srcDir%\=!"if not exist "%dstDir%\!relPath!" (set "needCopy=1"goto :copyFiles) )endlocal echo script run finish! pause:copyFiles if "%needCopy%"=="1" (echo 目标目录缺少文件或目录,开始拷贝...xcopy "%srcDir%\*" "%dstDir%\" /E /H /K /Y ) else (echo 目标目录已包含所有文件和目录,无需复制 ) goto :eof
