xcopy:移动文件而不是复制?


11

我想使用xcopy校验标志在网络上移动而不是复制文件。我找不到在xcopy上移动文件的开关,是否xmove可以使用它verify

目前,我正在使用,xcopy /D /V只有在验证文件已成功复制到目标后,需要删除源中的文件。


1
您应该意识到,即使使用/v也不保证文件已正确写入:磁盘和OS缓存意味着写入缓存中的文件将在成功提交之前从那里检索。唯一安全的选择是进行复制,并计划在将来进行验证和删除。试探性地讲,我想说5分钟就足够了,但是没有硬性规定:这取决于光盘活动和缓存大小(我说的是遇到缓存写入失败的情况)。
AFH 2014年

Answers:


11

您应该检查一下robocopy,它比强大得多xcopy。您可以使用/MOV或轻松移动文件/MOVE

仅移动文件(复制后从源中删除)

robocopy from_folder to_folder files_to_copy /MOV

移动文件和目录(复制后从源中删除)

robocopy from_folder to_folder files_to_copy /MOVE

http://ss64.com/nt/robocopy.html


2
verify据我所知,Robocopy没有。
JBurace 2014年

@JBurace如果您查看我发布的链接,它会指出:/MOVE : Move files and dirs (delete from source after copying)。如果未复制,则不会删除源。
imtheman 2014年

2
如果移动但文件大小不匹配怎么办?这就是为什么我需要做一个verify。我没有在robocopy信息中看到任何内容,它实际上验证了两个文件大小,以确保它不仅被移动而且被正确移动。
JBurace 2014年

@JBurace我不认为它可以那样工作。如果它没有复制所有文件,那么它将像什么都没有复制一样,因此不会删除源。
imtheman 2014年

1

您可以使用批处理文件运行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
JBurace 2014年

它将包含最后一个命令运行的结果。您可以使用简单的批处理文件进行测试,例如:pastebin.com/6GwNA7MP
2014年

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 ... )
Jesse Chisholm,

当然,这效率会低得多(在同一个硬盘中移动非常便宜)...
Ohad Schneider19年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.