Por que o xcopy está retornando "número inválido de parâmetros"?

10

Sob algumas circunstâncias, o xcopy retornará o erro Invalid number of parameterssem fornecer uma pista do que está acontecendo. A solução usual para isso é ter certeza de que seus nomes de arquivos estejam entre aspas, pois isso pode ser um problema com arquivos em lote nos quais você tem algo parecido xcopy %1 %2e realmente precisa xcopy "%1" "%2". Recentemente, deparei-me com um problema em que o problema não era espaços:

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

Respostas:

14

A solução para essa foi complicada: o xcopy está analisando as barras no caminho para seu próprio binário. Isso funciona bem:

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

Você também pode encontrar isso se tiver PATHdefinido usando barras invertidas em vez de barras invertidas.

Slothman
fonte
Além disso, se você estiver usando isso como um Post-build event, você tem que ter certeza que você coloque aspas o caminho completo $(TargetDir), como pode haver espaços no caminho:xcopy "$(TargetDir)*.dll" ..\..\Project.Web\bin
Highmastdon
1
Isso também pode acontecer se você tiver barras no Caminho de origem ou de destino. Apenas substitua todas as barras por barras invertidas em todo o caminho que você passa para o xcopy!
Juraj Petrik
0

Minha descoberta foi que eu precisava de barras duplas nas opções

c:\windows\system32\xcopy.exe //f //r //i //d //y * "..\bar\"
Kenneth Hov
fonte