Warum gibt xcopy "ungültige Anzahl von Parametern" zurück?

10

Unter bestimmten Umständen gibt xcopy den Fehler zurück, Invalid number of parametersohne dass Sie einen Hinweis darauf erhalten, was gerade passiert . Die übliche Lösung hierfür besteht darin, sicherzustellen, dass Ihre Dateinamen in Anführungszeichen gesetzt sind, da dies ein Problem bei Batch-Dateien sein kann, bei denen Sie so etwas haben xcopy %1 %2und wirklich brauchen xcopy "%1" "%2". Vor kurzem bin ich jedoch auf ein Problem gestoßen, bei dem es sich nicht um Leerzeichen handelte:

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

Antworten:

14

Die Lösung für dieses Problem war schwierig: Es stellt sich heraus, dass xcopy die Schrägstriche im Pfad zu seiner eigenen Binärdatei analysiert. Das funktioniert gut:

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

Sie können auch darauf stoßen, wenn Sie Ihre PATHDefinition mit Schrägstrichen anstelle von Schrägstrichen definiert haben.

Faultier
quelle
Auch wenn Sie dies als verwenden Post-build event, müssen Sie sicherstellen, dass Sie Anführungszeichen um den vollständigen Pfad von setzen $(TargetDir), da möglicherweise Leerzeichen im Pfad vorhanden sind:xcopy "$(TargetDir)*.dll" ..\..\Project.Web\bin
Highmastdon
1
Dies kann auch passieren, wenn Sie im Quell- oder Zielpfad Schrägstriche haben. Ersetzen Sie einfach alle Schrägstriche durch Schrägstriche auf dem gesamten Pfad, den Sie an xcopy übergeben!
Juraj Petrik
0

Meine Entdeckung war, dass ich doppelte Schrägstriche bei Optionen benötigte

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