Robocopy:跳过/失败文件的日志名称

Robocopy:跳过/失败文件的日志名称

我正在使用以下批处理文件来运行我的 robocopy 命令:

@ECHO OFF
for /f %%a in ('wmic os get LocalDateTime ^| findstr ^[0-9]') do (set ts=%%a)
robocopy [source] [target] /log+:D:\logs\log_%ts:~0,8%.log /e /xo /w:10 /r:1000 /z /NP
robocopy [source] [target] /log+:D:\logs\log_%ts:~0,8%.log /e /xo /w:10 /r:1000 /z /NP

这帮助我记录了我想要的所有详细信息,但它没有记录跳过/失败的文件的名称。是否有脚本/robocopy 命令/任何其他方式来记录跳过/失败的文件的名称以帮助我确定此类文件。对于通过网络传输的大量文件,确定此类文件变得非常困难。

我最接近的类似问题是但即便如此,也没有任何可接受/有效的答案

编辑1:根据 Kamen Minkov 的评论,我在 robocopy 命令中包含了 /v(详细)。当我故意使文件传输失败时,它会记录错误(重试历史记录),但这会使日志文件越来越难以解释。即使没有 /v 也观察到了同样的情况。我只希望失败的传输文件名在我的 .txt 日志文件中记录为失败一次

编辑2: 根据 JosefZ 的回答,我运行了以下代码:

@ECHO OFF
for /f %%a in ('wmic os get LocalDateTime ^| findstr ^[0-9]') do (set ts=%%a)
robocopy [source] [target] /log+:D:\logs\log_%ts:~0,8%.log /e /xo /w:10 /r:0 /z /NP /V
if errorlevel 8 findstr "^[0-9,a-Z]" "D:\logs\log_%ts:~0,8%.log"

传输所有文件后出现以下错误(我拔掉了网线导致几个文件失败,所以有文件失败):

FINDSTR:无法打开 D:\ABC\log\ErrorLog_20151029_1035.log

编辑3:发生上述错误是因为我错误地提到了退出代码的日志文件的名称。正确的代码是(正如 JosefZ 所回答的):

@ECHO OFF
for /f %%a in ('wmic os get LocalDateTime ^| findstr ^[0-9]') do (set ts=%%a)
robocopy [source] [target] /log+:D:\ABC\log\log_%ts:~0,8%_%ts:~8,4%.log /e /xo /w:10 /r:2 /z /NP /V /TEE
if errorlevel 8 findstr "^[0-9,a-Z]" "D:\ABC\log\log_%ts:~0,8%_%ts:~8,4%.log"

答案1

按照robocopy /?(或复制工具描述)和ROBOCOPY 退出代码, 使用:

  • /V产生详细输出,显示跳过的文件;
  • /R:0(不重试)将跳过任何正在使用的文件以加快复制速度将日志文件中任何偶然特定错误的描述减少为唯一发生的情况(这使得后续调查或错误原因变得更容易);
  • if errorlevel 8 findstr "^[0-9,a-Z]" "D:\logs\log_%ts:~0,8%.log"解释:
    • errorlevel大于7表示复制操作期间至少发生一次失败;
    • findstr "^[0-9,a-Z]" ...仅显示记录的错误,例如
      2015/10/28 17:27:55 ERROR 32 (0x00000020) Copying File [source]\file.ext
      The process cannot access the file because it is being used by another process.
  • (化妆品错误)/w:10在这种情况下似乎是多余的/r:0

代码:

@ECHO OFF
for /f %%a in ('wmic os get LocalDateTime ^| findstr ^[0-9]') do (set ts=%%a)
robocopy [source] [target] /log+:D:\logs\log_%ts:~0,8%.log /e /xo /w:10 /r:0 /z /NP /V
if errorlevel 8 findstr "^[0-9,a-Z]" "D:\logs\log_%ts:~0,8%.log"

答案2

根据本文,您可能想尝试该/v选项。

(...) 生成详细输出,并显示所有跳过的文件。

相关内容