Dlaczego xcopy zwraca „niepoprawną liczbę parametrów”?


10

W niektórych okolicznościach xcopy zwróci błąd, Invalid number of parametersnie dając ci pojęcia, co się dzieje. Typowym rozwiązaniem tego jest upewnienie się, że nazwy plików są ujęte w cudzysłów, ponieważ może to być problem z plikami wsadowymi, w których masz coś podobnego xcopy %1 %2i naprawdę potrzebujesz xcopy "%1" "%2". Ostatnio natknąłem się na problem, w którym problemem nie były spacje:

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

Odpowiedzi:


14

Rozwiązanie tego było trudne: okazuje się, że xcopy analizuje ukośniki na ścieżce do własnego pliku binarnego. Działa to dobrze:

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

Możesz także na to natknąć się, jeśli masz PATHzdefiniowane użycie ukośników zamiast ukośników odwrotnych.


Również jeśli używasz tego jako a Post-build event, musisz upewnić się, że umieściłeś cudzysłowy wokół pełnej ścieżki $(TargetDir), ponieważ mogą być spacje na ścieżce:xcopy "$(TargetDir)*.dll" ..\..\Project.Web\bin
Highmastdon

1
Może się to również zdarzyć, jeśli masz ukośniki w ścieżce źródłowej lub docelowej. Po prostu zamień wszystkie ukośniki na lewe ukośniki na całej ścieżce, którą podajesz do xcopy!
Juraj Petrik,

0

Moim odkryciem było to, że potrzebowałem podwójnych ukośników do przodu w opcjach

c:\windows\system32\xcopy.exe //f //r //i //d //y * "..\bar\"
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.