Batch file xcopy已成功完成,但触发了错误

Batch file xcopy已成功完成,但触发了错误,batch-file,xcopy,Batch File,Xcopy,我有一个批处理脚本,可以使用xcopy命令将文件从一个磁盘复制到另一个磁盘,并将其结果/过程记录到日志文件中 当它记录失败时,我使用的是双管道(“| |”),因此如果命令返回除错误代码0以外的任何内容,它将触发我的错误处理 我的问题是我成功地记录了xcopy运行并复制了我要求它复制的所有文件。我验证了复制的文件是好的。但出于某种原因,它似乎没有返回0并触发了我的错误处理。我已经复制并粘贴了相同的脚本,用于其他工作正常的备份,但这一个在成功时出错了,为什么 mkdir %Disk%\"Report

我有一个批处理脚本,可以使用xcopy命令将文件从一个磁盘复制到另一个磁盘,并将其结果/过程记录到日志文件中

当它记录失败时,我使用的是双管道(“| |”),因此如果命令返回除错误代码0以外的任何内容,它将触发我的错误处理

我的问题是我成功地记录了xcopy运行并复制了我要求它复制的所有文件。我验证了复制的文件是好的。但出于某种原因,它似乎没有返回0并触发了我的错误处理。我已经复制并粘贴了相同的脚本,用于其他工作正常的备份,但这一个在成功时出错了,为什么

mkdir %Disk%\"Report Archives" || goto FAILURE
xcopy "C:\NetworkBackups\Report Archives" %Disk%\"Report Archives" /E /H /C /I /R /Y >> %LogFile% || goto FAILURE

for /f "tokens=1" %%u in ('echo %time%') do set t=%%u
if "%t:~1,1%"==":" set t=0%t%
set MilitaryTime=%t:~0,2%:%t:~3,2%:%t:~6,2%
echo %date:~10,4%/%date:~4,2%/%date:~7,2% %MilitaryTime%:  Done Copying "C:\NetworkBackups\Report Archives" to Monthly Backup disk: %Disk% >> %LogFile%

:FAILURE
echo %date:~10,4%/%date:~4,2%/%date:~7,2% %MilitaryTime%:  THIS BACKUP UP SCRIPT HAS ENCOUNTERED AN ERROR WITH THE PREVIOUS COMMAND. >> %LogFile%
以下是生成的日志文件的结尾:

C:\NetworkBackups\Report Archives\[redacted]\2011\2011.12.31 23.45\reports.asp@ReportID=91.html
C:\NetworkBackups\Report Archives\[redacted]\2011\2011.12.31 23.45\reports.asp@ReportID=92.html
C:\NetworkBackups\Report Archives\[redacted]\2011\2011.12.31 23.45\reports.asp@ReportID=93.html
C:\NetworkBackups\Report Archives\[redacted]\2011\2011.12.31 23.45\reports.asp@ReportID=94.html
C:\NetworkBackups\Report Archives\[redacted]\2011\2011.12.31 23.45\reports.asp@ReportID=95.html
C:\NetworkBackups\Report Archives\[redacted]\2011\2011.12.31 23.45\reports.asp@ReportID=96.html
C:\NetworkBackups\Report Archives\[redacted]\2011\2011.12.31 23.45\reports.asp@ReportID=97.html
C:\NetworkBackups\Report Archives\[redacted]\2011\2011.12.31 23.45\reports.asp@ReportID=98.html
C:\NetworkBackups\Report Archives\[redacted]\2011\2011.12.31 23.45\reports.asp@ReportID=99.html
388548 File(s) copied
2016/10/27 03:06:06:  THIS BACKUP UP SCRIPT HAS ENCOUNTERED AN ERROR WITH THE PREVIOUS COMMAND. 

我不知道为什么会触发失败标签,而不是记录“复制完毕”等等。另外,请注意,此脚本仅在被告知转到失败标签时才运行失败标签。虽然您在这里看到的脚本中没有列出故障,但当运行正常时,故障会被跳过。

您需要在
:FAILURE
标签前放置类似
goto:EOF
exit/B
的内容;否则,您会无意中落入该代码部分;考虑到批处理文件总是逐行执行。。。而且,
%Disk%\“报告存档”
实际上应该读取
%Disk%\Report Archives”
,因为
%Disk%
本身不包含
。此外,除非是有意的,否则如果目录创建不起作用,那么错误消息还没有定义%MilitaryTime%,因此无法在%LogFile%中使用它。我提到我没有发布所有脚本。在我的脚本中,我定义了%Disk%和%MilitaryTime%,它们工作得很好。我没有把所有的东西都贴在这里,因为它与我无关。我也有类似于“goto:EOF”的东西跳过失败标签,成功的结果会跳过失败标签。请参见生成的我的日志文件中的。即使失败部分每次都运行,在该日志中它也不会生成“复制完毕”C:\NetworkBacku……“回音含义”“某物”从xcopy命令触发了一个非零退出代码,它直接跳到故障部分。您需要在
:failure
标签前放置类似
goto:EOF
exit/B
的内容;否则,您会无意中落入该代码部分;考虑到批处理文件总是逐行执行。。。而且,
%Disk%\“报告存档”
实际上应该读取
%Disk%\Report Archives”
,因为
%Disk%
本身不包含
。此外,除非是有意的,否则如果目录创建不起作用,那么错误消息还没有定义%MilitaryTime%,因此无法在%LogFile%中使用它。我提到我没有发布所有脚本。在我的脚本中,我定义了%Disk%和%MilitaryTime%,它们工作得很好。我没有把所有的东西都贴在这里,因为它与我无关。我也有类似于“goto:EOF”的东西跳过失败标签,成功的结果会跳过失败标签。请参见生成的我的日志文件中的。即使失败部分每次都运行,在该日志中它也不会生成“复制完成”C:\NetworkBacku……“echo”,意思是“某物”触发了来自xcopy命令的非零退出代码,并直接跳到失败部分。