XCopy сталкивается с нарушением обмена, как справиться
5753
Dominique
Я использую xcopyдля копирования больших пачек файлов. Одна вещь, которая мне особенно нравится, xcopyэто /Fпереключатель, который показывает все исходные и целевые файлы, включая пути, что-то вроде:
Как видите, каталоги D:\Temp\origin\A_Empty\иD:\Temp\origin\C_Fill_with_empty\empty\, кажется, что не были скопированы (пустые файлы, кажется, копируются, а не пустые каталоги).
Это, однако, не соответствует действительности: в папке назначения каталоги A_emptyи C_Fill_with_empty\emptyесть, но /Fпереключатель показывает только те файлы, которые были скопированы, поэтому копирование пустых каталогов выполняется, но не показывается. (В моем оригинальном посте я думал, что пустые каталоги не были скопированы)
Самое главное, я не понимаю значение /Cпереключателя, который говорит
Продолжает копирование, даже если возникают ошибки.
Прошлой ночью xcopyрезультатом связки было сообщение об ошибке:
Я хотел бы избежать этого невоспроизводимого сообщения об ошибке, используя механизм повторных попыток, но я не знаю, как /Cбудет работать коммутатор: будет ли он вести себя как «Повторить» или «Игнорировать»? (Этот вопрос уже задавался другими людьми, но эти люди получили совет измениться robocopy, но, как упоминалось в этом сообщении StackOverflow, это также не так подвержено ошибкам).
Кто-нибудь знает, как заставить механизм повтора?
заранее спасибо
Ну, может, причина использования robocopy в том, что в ней нет этой ошибки? Я знаю, что по умолчанию robocopy повторяет что-то около 100 000 раз.
djsmiley2k 7 лет назад
0
Миллиард повторных попыток не принесет пользы, если ошибка не исчезнет.
Overmind 7 лет назад
1
Просто для вашего сведения: я изменил сообщение, поскольку проблема пустых каталогов была решена в это время.
Dominique 7 лет назад
0
Уже выложили решение для этого.
Overmind 7 лет назад
0
@ Overmind: действительно, ты прав. К сожалению, проблема не воспроизводима, и это происходит на разных файлах, по-видимому, случайно. Я считаю, что есть какой-то процесс, который очень быстро что-то делает с файлом (например, делает резервную копию или около того), и в этот конкретный момент у xcopy есть проблема. Простая повторная попытка (возможно, после ожидания одной секунды) может решить эту проблему.
Dominique 7 лет назад
0
Пример повтора здесь: http://lichao.net/eblog/how-to-use-loop-function-in-dos-to-re-try-command-200909380.html; вы можете использовать что-то подобное + команду timeout (чтобы задержать повтор, сколько секунд вы считаете необходимыми).
Overmind 7 лет назад
0
1 ответ на вопрос
1
Overmind
Параметр / E копирует каталоги и подкаталоги, включая пустые. Просто добавьте это, и проблема решена.
Параметр / C продолжает копирование, даже если возникают ошибки. Это должно пропустить любые проблемы.
Для уточнения, / c игнорирует ошибку и продолжает процесс копирования со следующего допустимого файла.
Если вы хотите повторять попытки при ошибках (хотя и не рекомендуется), вы можете использовать для этого цикл WHILE в пакетном файле (полезные команды: IF ERRORLEVEL = и время ожидания ). Пример .
спасибо за ответ, но я решил не использовать его: я работаю с пакетными файлами, используя более 100 команд xcopy. Кроме того, команды xcopy содержат сложные структуры каталогов, дублирование которых ставит под угрозу качество пакетных файлов. Поэтому я решил пойти по другому пути: файлы, вызывающие проблемы, расположены в одном конкретном сетевом расположении, и я попросил своего сетевого администратора установить файловый монитор для каждого файла. Как только проблема возникнет снова, мы сравним результаты мониторинга файлов с временными метками в журнале результатов моего пакетного файла.
Dominique 7 лет назад
0
Это была хорошая идея; Мониторинг параметров является первым шагом, который следует предпринять. Лучше знать причину, а не обходить ее.
Overmind 7 лет назад
0