Tại sao xcopy trả về số lượng tham số không hợp lệ


10

Trong một số trường hợp, xcopy sẽ trả về lỗi Invalid number of parametersmà không cho bạn manh mối về những gì đang xảy ra. Giải pháp thông thường cho việc này là đảm bảo rằng tên tệp của bạn được đặt trong dấu ngoặc kép, vì đây có thể là một vấn đề với các tệp bó mà bạn có thứ gì đó giống xcopy %1 %2và bạn thực sự cần xcopy "%1" "%2". Gần đây tôi đã gặp phải một vấn đề, tuy nhiên, vấn đề không phải là không gian:

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

Câu trả lời:


14

Giải pháp cho vấn đề này rất khó: hóa ra xcopy đang phân tích cú pháp các dấu gạch chéo về phía trước trong đường dẫn đến tệp nhị phân của chính nó. Điều này hoạt động tốt:

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

Bạn cũng có thể gặp phải vấn đề này nếu bạn đã PATHxác định bằng cách sử dụng dấu gạch chéo thay vì dấu gạch chéo ngược.


Ngoài ra nếu bạn đang sử dụng điều này như một Post-build event, bạn phải đảm bảo rằng bạn đặt dấu ngoặc kép trên đường dẫn đầy đủ $(TargetDir), vì có thể có khoảng trắng trong đường dẫn:xcopy "$(TargetDir)*.dll" ..\..\Project.Web\bin
Highmastdon

1
Điều này cũng có thể xảy ra nếu bạn có dấu gạch chéo trong Đường dẫn nguồn hoặc đích. Chỉ cần thay thế tất cả các dấu gạch chéo về phía trước bằng dấu gạch chéo ngược trong tất cả đường dẫn mà bạn chuyển đến xcopy!
Juraj Petrik

0

Khám phá của tôi là tôi cần tăng gấp đôi về phía trước trên các tùy chọn

c:\windows\system32\xcopy.exe //f //r //i //d //y * "..\bar\"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.