1

Я пытаюсь использовать xcopy /exclude:exclude.txt и один из путей в exclude.txt содержит пробел, и он не работает. Есть ли обходной путь для этого?

3 ответа3

4

Прочитайте соответствующие разделы справки xcopy

/EXCLUDE:file1[+file2][+file3]...
         Specifies a list of files containing strings.  Each string
         should be in a separate line in the files.  When any of the
         strings match any part of the absolute path of the file to be
         copied, that file will be excluded from being copied.  For
         example, specifying a string like \obj\ or .obj will exclude
         all files underneath the directory obj or all files with the
         .obj extension respectively.

Мы видим, что опция exclude работает не с путями или именами файлов, а с фильтрами. Чтобы проиллюстрировать это, я попытаюсь привести короткий пример. Изобразите это exclude.txt

Unicorns
Dolphins

Это отфильтрует любой файл, в котором есть единороги или дельфины в любом месте его имени. например, Dolphins.txt будет отфильтрован, но Ponys.txt будет в порядке.

Чтобы вернуться к вашей проблеме. Причина, по которой ваш фильтр не соответствует, не из-за пробела в пути. По умолчанию xcopy будет заботиться только о имени файла, а не о полном пути, любой фильтр, содержащий полный путь, не будет совпадать, и файл будет скопирован.

Вы можете изменить это поведение xcopy, указав в своей команде флаг /f. Это должно решить проблему, которую вы видите.

1

Отредактируйте exclude.txt и поместите двойные кавычки вокруг пути, который содержит пробел.

0

Одна вещь, которую я сделал в этой ситуации, - это использование "короткого имени" (старого стиля DOS 8.3 name). Вы можете получить это имя с помощью dir /x . Каждая версия Windows начиная с Win 95, которая допускает длинные имена файлов, также допускает это альтернативное имя 8.3 для files /dirs.

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