У меня есть такая структура каталогов:
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%, чтобы получить текущий каталог. Это должно помочь вам исключить определенные каталоги. Дополнительная помощь здесь: