2

У меня есть 2 структуры каталогов (A и B), которые обычно не перекрываются. Я хочу слить А в Б.

Следующая команда объединит каталоги:

xcopy A B /E /Y

Тем не менее, я хочу иметь возможность обнаруживать конфликты между моими двумя каталогами и не перезаписывать, если файл уже находится в месте назначения (в B). Xcopy автоматически перезапишет файлы. Я не хочу получать подсказки для каждого конфликта (/ у). Я хочу, чтобы xcopy вернул ошибку при конфликте.

Параметр /D также не работает, потому что мне нет дела до даты.

Я думаю, что это невозможно с xcopy. Есть ли другие решения для этого?

2 ответа2

6

Вы можете использовать команду ROBOCOPY для перемещения всех файлов, которые не сталкиваются с существующими файлами в месте назначения. Я добавил параметр /L который перечисляет результат, фактически ничего не делая. Если все работает как нужно, просто удалите параметр /L чтобы фактически переместить файлы.

robocopy sourcePath destinationPath /mov /xc /xn /xo /xx /L

Команда ROBOCOPY создает хороший журнал всех действий, которые она выполняет. Используя приведенную выше команду, вы можете определить, когда файлы не были перемещены из-за столкновения, взглянув на строку Files :... в сводке. Если количество копий меньше общего, то там, где коллизии.

Команда ROBOCOPY имеет много опций, которые делают ее чрезвычайно мощной. Введите HELP ROBOCOPY или ROBOCOPY HELP в командной строке для получения дополнительной информации.

0

Создайте файл, например dummy.txt, заполняйте его множеством строк, содержащих N например:

N
N
N
N
N

Вызовите XCOPY A B /E /-Y <dummy.txt >output.txt

любая строка в выходном файле, содержащая вопрос, была конфликтующим файлом, который не был перезаписан.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .