Исключить только некоторые файлы с одинаковыми именами при копировании с использованием robocopy

15

У меня есть структура каталогов, как это:

folder1\
    help.txt
    folder2\
        help.txt
    folder3\
        help.txt
    ...

Я хочу , чтобы скопировать содержимое folder1 с использованием Robocopy . Например:

robocopy folder1 destination /E

Я хочу исключить файл help.text, находящийся в папке folder1, но включающий файлы help.txt в folder2, folder3 и т. Д. В других местах структуры каталогов также могут быть файлы с именем help.txt, поэтому мне не нужно код пути к файлам для включения.

Я могу использовать следующую команду для исключения всех файлов с именем help.txt, но есть ли способ просто исключить файл help.txt в корне folder1?

robocopy folder1 destination /E /XF help.txt
Дэниэл Ричардсон
источник

Ответы:

15

Вы должны указать полный путь (включая диск) к файлу для исключения. Относительные пути не будут работать.

Это работает:

robocopy folder1 destination /E /XF "c:\somedir\another dir\folder1\help.txt"

Это не:

robocopy folder1 destination /E /XF "folder1\help.txt"

И при этом это:

robocopy folder1 destination /E /XF ".\folder1\help.txt"
Приостановлено до дальнейшего уведомления.
источник
Вы можете исключить несколько файлов, как такrobocopy folder1 destination /E /XF "c:\file1" "c:\file2"
Schnatterer
@ Деннис-Уильямсон, спасибо за правильный ответ. Жаль, что это не работает с подстановочными знаками: robocopy folder1 destination /E /XF "c:\somedir\another dir\folder1\help.txt*"приводит к ошибке.
Оливье Фошо
Так что после 2 часов попыток других команд это сработало. Бесконечно благодарен!
Кристофер Чиппс
0

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

В противном случае вам понадобится использовать другой инструмент.

Это будет работать:

echo folder1\help.txt > \temp\excl.txt
xcopy /E folder1 destination /EXCLUDE:\temp\excl.txt

На самом деле, если у вас была структура каталогов, которая выглядела так:

folder1\
  help.txt
  folder1\
    help.txt

это, вероятно, исключит оба этих файла.

wfaulk
источник
Я вижу, что я не прав.
wfaulk
0

Вы можете использовать% CD%, чтобы получить текущий каталог. Это должно помочь вам исключить определенные каталоги. Дополнительная помощь здесь:

/programming//a/5274061

азбука
источник