¿Cómo puedo especificar un archivo / EXCLUDE con espacios para xcopy?

2

Intenté especificar un /EXCLUDEnombre de archivo con espacios xcopy, pero siempre se ahoga. ¿Cómo puedo especificar una ruta de este tipo xcopysin copiar los /EXCLUDEarchivos en el directorio actual y sin usar el antiguo ~1truco de nombre corto de 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

Ninguna de las formas de citar el nombre de archivo que funcionaría bien en un shell decente me funciona con xcopy. Por alguna razón, la "/EXCLUDE:<filename>"sintaxis impide que se reconozca la opción en sí. La otra sintaxis, "/EXCLUDE:"<filename>"hace Can't read file: "<filename>"que se imprima el mensaje , mostrando que la opción se está analizando correctamente: las comillas dobles evitan que el argumento se divida en varias partes. Sin embargo, este mensaje sugiere que xcopy no elimina correctamente las comillas dobles del nombre de archivo antes de intentar abrir el archivo.

Parece, a partir de esto, que si el primer componente de la ruta que especifico /EXCLUDEcomenzó con ay "mi /EXCLUDEnombre de archivo termina ", podría hacer referencia a ese archivo desde la /EXCLUDEopción de xcopy con éxito. Pero Windows se niega a dejarme colocar el "carácter en mi nombre de archivo.

Entonces, ¿cómo uso xcopy en un mundo moderno con nombres de archivos espaciales?

binki
fuente
2
xcopy es un programa bastante antiguo. Sugerencia fácil, deje de usar nombres de archivos con espacios ... son difíciles de manejar en general en todos los sistemas operativos, ya que tienden a ser separadores de argumentos.
mdpc
Todos los sistemas operativos que no sean Windows parecen usar algo así como un shell POSIX y un entorno que tiene un método suficientemente definido para especificar rutas de archivos con espacios. Windows aparentemente no tiene una forma de pasar verdaderamente múltiples argumentos a un programa lanzado, pero pasa los argumentos como una cadena plana, lo que significa que la delimitación de argumentos ocurre en el momento equivocado. Pero Windows es el sistema operativo donde los espacios en los nombres de ruta son más comunes, por lo que debe haber una solución a este problema, especialmente porque la xcopy en Windows 8 no puede ser la misma xcopy en Windows 98.
binki
Sin embargo, supongo que eso robocopyprobablemente funcione en esta situación y esté disponible siempre y cuando se dirija a un Windows moderno.
binki