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_empty а также C_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 в пакетном файле (полезные команды: IF ERRORLEVEL = и время ожидания). Пример.

Другие вопросы по тегам