Назад | Перейти на главную страницу

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

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

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

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

robocopy folder1 destination /E

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

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

robocopy folder1 destination /E /XF help.txt

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

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

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"

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

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

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

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

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

folder1\
  help.txt
  folder1\
    help.txt

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

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

https://stackoverflow.com/a/5274061