¿Por qué xcopy devuelve "número de parámetros no válido"?

10

En algunas circunstancias, xcopy devolverá el error Invalid number of parameterssin darle una pista de lo que está sucediendo. La solución habitual para esto es asegurarse de que sus nombres de archivo estén entre comillas, ya que esto puede ser un problema con los archivos por lotes en los que tiene algo parecido xcopy %1 %2y realmente lo necesita xcopy "%1" "%2". Sin embargo, recientemente me encontré con un problema en el que el problema no eran espacios:

C:\Temp\foo>c:/windows/system32/xcopy.exe /f /r /i /d /y * ..\bar\
Invalid number of parameters
Slothman
fuente

Respuestas:

14

La solución a esto fue complicada: resulta que xcopy está analizando las barras diagonales en el camino hacia su propio binario. Esto funciona bien:

C:\Temp\foo>c:\windows\system32\xcopy.exe /f /r /i /d /y * ..\bar\
C:\Temp\foo\blah -> C:\Temp\bar\blah
1 File(s) copied

También puede encontrarse con esto si ha PATHdefinido el uso de barras diagonales en lugar de barras diagonales inversas.

Slothman
fuente
Además, si está usando esto como un Post-build event, debe asegurarse de poner comillas alrededor de la ruta completa de $(TargetDir), ya que puede haber espacios en la ruta:xcopy "$(TargetDir)*.dll" ..\..\Project.Web\bin
Highmastdon
1
Esto también puede suceder si tiene barras diagonales en la ruta de origen o de destino. ¡Simplemente reemplace todas las barras diagonales con barras invertidas en todo el camino que pasa a xcopy!
Juraj Petrik