XCopy 遇到共享冲突,如何处理

XCopy 遇到共享冲突,如何处理

我用它xcopy来复制大量文件。我特别喜欢的一点是,xcopy它有一个/F开关,可以显示所有源文件和目标文件,包括路径,例如:

xcopy /E /Y /F D:\Temp_Folder\test_origin\* D:\Temp_Folder\test_dest\
D:\Temp\origin\B_Normal\blabla.txt -> D:\Temp\dest\B_Normal\blabla.txt
D:\Temp\origin\B_Normal\B.A\normal.txt -> D:\Temp\dest\B_Normal\B.A\normal.txt
D:\Temp\origin\B_Normal\B.B\drawing.bmp -> D:\Temp\dest\B_Normal\B.B\drawing.bmp
D:\Temp\origin\C_Fill_with_empty\empty.bmp -> D:\Temp\dest\C_Fill_with_empty\empty.bmp
D:\Temp\origin\C_Fill_with_empty\empty.txt -> D:\Temp\dest\C_Fill_with_empty\empty.txt
5 File(s) copied

然而似乎存在一些问题:

D:\Temp\origin>tree /F /A
...
D:.
+---A_Empty
+---B_Normal
|   |   blabla.txt
|   |
|   +---B.A
|   |       normal.txt
|   |
|   \---B.B
|           Drawing.bmp
|
\---C_Fill_with_empty
    |   empty.bmp
    |   empty.txt
    |
    \---empty

如您所见,目录D:\Temp\origin\A_Empty\D:\Temp\origin\C_Fill_with_empty\empty\似乎没有被复制(似乎复制的是空文件,而不是空目录)。

但事实并非如此:在目标文件夹中,目录A_emptyC_Fill_with_empty\empty都在那里,但/F开关只显示已复制的文件,因此空目录的复制已完成,但没有显示。(在我最初的帖子中,我以为空目录没有被复制)

最重要的是,我不明白这个/C开关的意思,它说

即使出现错误也继续复印。

昨晚xcopy一堆复制的结果出现了错误信息:

\\nas\<Complicated_Directory_Tree>\<file1>.gif -> G:\<Complicated_Directory_Tree>\<file1>.gif
\\nas\<Complicated_Directory_Tree>\<file2>.gif -> G:\<Complicated_Directory_Tree>\<file2>.gif
Sharing violation

我想使用重试机制来避免这种无法重现的错误消息,但我不知道交换机/C会如何表现:它会表现为“重试”还是“忽略”?(这个问题已经被其他人问过了,但那些人收到了改为的建议robocopy,但正如在这个 StackOverflow 帖子,而且这似乎不太容易出错)。

有人知道如何强制重试机制吗?

提前致谢

答案1

/E 参数复制目录和子目录,包括空目录。只需添加该参数,问题就解决了。

/C即使出现错误,参数仍会继续复制。这样应该可以避免任何问题。

具体来说,/C忽略错误并继续复制下一个有效文件。

如果您希望在出现错误时重试(尽管不推荐),您可以在批处理文件中使用 WHILE 循环(有用的命令:如果错误级别= 和暂停)。例子

相关内容