11

Under some circumstances, xcopy will return the error Invalid number of parameters without giving you a clue as to what’s going on. The usual solution for this is to be sure that your filenames are enclosed in quotes, as this can be an issue with batch files where you have something like xcopy %1 %2 and you really need xcopy "%1" "%2". I recently ran into a problem, however, where the problem wasn't spaces:

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

2 Answers2

14

The solution to this one was tricky: it turns out that xcopy is parsing the forward slashes in the path to its own binary. This works fine:

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

You can also run into this if you have your PATH defined using forward slashes instead of backslashes.

Slothman
  • 351
  • 1
  • 2
  • 9
  • Also if you're using this as a `Post-build event`, you have to make sure that you put quotes around the full path of `$(TargetDir)`, as there might be spaces in the path: `xcopy "$(TargetDir)*.dll" ..\..\Project.Web\bin` – Highmastdon Jan 08 '15 at 12:17
  • 1
    This can also happen if you have forward slashes in Source or Destination Path. Just replace all forward slashes with backslashes in all the path that you pass to xcopy! – Juraj Petrik Nov 18 '15 at 15:06
2

My discovery was that I needed double forward slashes on options

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