
Я пытался указать /EXCLUDE
имя файла с пробелами в нем для xcopy
, но он всегда подавляется. Как мне указать такой путь для xcopy
без копирования /EXCLUDE
файлов в текущий каталог и без использования старого ~1
хака DOS shortname?
c:\Users\binki\Documents\repos\xcopy_exclude_spacey>dir source
Volume in drive C is OS
Volume Serial Number is 7C4E-86D4
Directory of c:\Users\binki\Documents\repos\xcopy_exclude_spacey\source
2013-01-03 16:39 <DIR> .
2013-01-03 16:39 <DIR> ..
2013-01-03 16:39 0 a
2013-01-03 16:39 0 a b c
2013-01-03 16:39 0 b
2013-01-03 16:39 0 c
4 File(s) 0 bytes
2 Dir(s) 117,279,027,200 bytes free
c:\Users\binki\Documents\repos\xcopy_exclude_spacey>type "various exclude rules\a"
a
c:\Users\binki\Documents\repos\xcopy_exclude_spacey>xcopy /E /EXCLUDE:"various exclude rules\a" source dest
Can't read file: "various exclude rules\a"
0 File(s) copied
c:\Users\binki\Documents\repos\xcopy_exclude_spacey>xcopy /E "/EXCLUDE:various exclude rules\a" source dest
Invalid number of parameters
Ни один из способов заключения имени файла в кавычки, который бы нормально работал в приличной оболочке, не работает у меня с xcopy. По какой-то причине "/EXCLUDE:<filename>"
синтаксис не позволяет распознать саму опцию. Другой синтаксис, "/EXCLUDE:"<filename>"
, приводит к выводу сообщения Can't read file: "<filename>"
, показывающего, что опция анализируется правильно: двойные кавычки не позволяют аргументу быть разделенным на несколько частей. Однако это сообщение предполагает, что двойные кавычки не удаляются должным образом из имени файла xcopy перед тем, как он попытается открыть файл.
Из этого следует, что если первый компонент пути, который я указываю, /EXCLUDE
начинается с a "
, а /EXCLUDE
имя файла заканчивается на "
, я смогу /EXCLUDE
успешно сослаться на этот файл из опции xcopy. Но Windows отказывается разрешить мне поместить "
символ в имя файла.
Итак, как использовать xcopy в современном мире с космическими именами файлов?