
Tentei especificar um /EXCLUDE
nome de arquivo com espaços para xcopy
, mas sempre engasga. Como posso especificar esse caminho xcopy
sem copiar os /EXCLUDE
arquivos para o diretório atual e sem usar o antigo ~1
hack de abreviação do DOS?
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
Nenhuma das maneiras de citar o nome do arquivo que funcionaria bem em um shell decente funciona para mim com o xcopy. Por alguma razão, "/EXCLUDE:<filename>"
a sintaxe impede que a própria opção seja reconhecida. A outra sintaxe, "/EXCLUDE:"<filename>"
, faz com que a mensagem Can't read file: "<filename>"
seja impressa, mostrando que a opção está sendo analisada corretamente: as aspas duplas impedem que o argumento seja dividido em múltiplas partes. No entanto, esta mensagem sugere que as aspas duplas não estão sendo removidas corretamente do nome do arquivo pelo xcopy antes de tentar abrir o arquivo.
Parece, a partir disso, que se o primeiro componente do caminho especificado em /EXCLUDE
começasse com a "
e meu /EXCLUDE
nome de arquivo terminasse em "
, eu seria capaz de referenciar esse arquivo a partir da /EXCLUDE
opção do xcopy com êxito. Mas o Windows se recusa a permitir que eu coloque o "
caractere no meu nome de arquivo.
Então, como uso o xcopy em um mundo moderno com nomes de arquivos espaçosos?