如何将批处理脚本中多次Robocopy执行结果写入单个日志文件
如何将批处理脚本中多次Robocopy执行结果写入单个日志文件
没问题!完全可以实现把多次Robocopy的运行结果都写到同一个日志文件里,这样你后续排查错误只需要打开这一个文件就行。核心就是用Robocopy的/LOG+参数——它会把每次命令的执行结果追加到指定日志文件中,而不是像/LOG那样覆盖原有内容。
下面是修改好的完整脚本,我给每个Robocopy命令都加上了日志追加的配置,你可以根据需要调整日志文件的路径:
@echo off set /p source="Enter Source laptop name: " set /p username="username: " :: 每次Robocopy执行都会把结果追加到同一个日志文件 Robocopy "\\%source%\C$\Data" "C:\Data" /e /r:1 /w:0 /LOG+"C:\Robocopy_Transfer_Log.txt" Robocopy "\\%source%\C$\tmpplm" "C:\tmpplm" /e /r:1 /w:0 /LOG+"C:\Robocopy_Transfer_Log.txt" Robocopy "\\%source%\C$\Users\%username%\Contacts" "C:\Users\%username%\Contacts" /e /r:1 /w:0 /LOG+"C:\Robocopy_Transfer_Log.txt" Robocopy "\\%source%\C$\Users\%username%\My Videos" "C:\Users\%username%\My Videos" /e /r:1 /w:0 /LOG+"C:\Robocopy_Transfer_Log.txt" Robocopy "\\%source%\C$\Users\%username%\AppData\Local\Lotus" "C:\Users\%username%\AppData\Local\Lotus" /e /r:1 /w:0 /LOG+"C:\Robocopy_Transfer_Log.txt" Robocopy "\\%source%\C$\Users\%username%\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations" "C:\Users\%username%\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations" /S /r:1 /w:0 /LOG+"C:\Robocopy_Transfer_Log.txt" del "C:\Users\%username%\AppData\Local\Lotus\Notes\Data\notes.ini" POWERSHELL.EXE -Command "Add-Type -AssemblyName System.Windows.Forms; [void] [System.Windows.Forms.MessageBox]::Show( 'Replacement script ran. Check dialog box for any errors.', 'Replacement Script', 'OK', 'Information' )"
额外小提示:
- 如果你需要在控制台也能实时看到Robocopy的输出,可以给每个命令再加一个
/TEE参数,这样结果会同时输出到日志文件和控制台(不过你的脚本开头用了@echo off,需要的话可以调整)。 - 日志文件的路径尽量选一个你有写入权限的位置,比如用户目录下的某个文件夹,避免因为权限问题导致日志写入失败。
- Robocopy的日志里会包含每个文件的复制状态、错误信息等详细内容,方便你后续定位问题。
备注:内容来源于stack exchange,提问作者Benny Wijnants
相关产品推荐
相关产品推荐

