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
Leniwiec
źródło

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.

Leniwiec
źródło
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\"
Kenneth Hov
źródło