Answers:
您应该检查一下robocopy
,它比强大得多xcopy
。您可以使用/MOV
或轻松移动文件/MOVE
。
仅移动文件(复制后从源中删除)
robocopy from_folder to_folder files_to_copy /MOV
移动文件和目录(复制后从源中删除)
robocopy from_folder to_folder files_to_copy /MOVE
verify
据我所知,Robocopy没有。
/MOVE : Move files and dirs (delete from source after copying)
。如果未复制,则不会删除源。
verify
。我没有在robocopy信息中看到任何内容,它实际上验证了两个文件大小,以确保它不仅被移动而且被正确移动。
您可以使用批处理文件运行Xcopy
带有验证的命令,然后检查Xcopy返回的错误级别,以确定文件是否成功复制。如果是这样,请删除源。
从Xcopy文档中:
Exit
code Description
==== ===========
0 Files were copied without error.
1 No files were found to copy.
2 The user pressed CTRL+C to terminate xcopy.
4 Initialization error occurred. There is not
enough memory or disk space, or you entered
an invalid drive name or invalid syntax on
the command line.
5 Disk write error occurred.
批处理示例:
Rem Attempt file copy...
xcopy /D /V %1 %2
Rem Check result code and if it was successful (0), delete the source.
if errorlevel 0 (
echo Copy completed successfully
del /Q %1
exit /B
)
Rem Not Errorlevel 0...
echo Copy failed for some reason.
errorlevel
还在工作,如果我做的:dir args && xcopy args >> logfile.txt
?还是会errorlevel
导致dir
?
if errorlevel 0
总是触发。因为它确实在检查,if errorlevel >= 0
所以您应该检查错误情况if errorlevel 1 ( ... failure case ... ) else ( ... success case ... )
。或者,如果您喜欢样式,if not errorlevel 0 (... success case ... )
或者,如果您喜欢样式if %ERRORLEVEL% EQU 0 ( ... success case ... )
/v
也不保证文件已正确写入:磁盘和OS缓存意味着写入缓存中的文件将在成功提交之前从那里检索。唯一安全的选择是进行复制,并计划在将来进行验证和删除。试探性地讲,我想说5分钟就足够了,但是没有硬性规定:这取决于光盘活动和缓存大小(我说的是遇到缓存写入失败的情况)。