ทำไม xcopy ถึงส่งคืน“ จำนวนพารามิเตอร์ที่ไม่ถูกต้อง”?


10

ในบางสถานการณ์ xcopy จะส่งคืนข้อผิดพลาดInvalid number of parametersโดยไม่แจ้งเบาะแสว่าเกิดอะไรขึ้น วิธีการแก้ปัญหาตามปกติการนี้เพื่อให้แน่ใจว่าชื่อไฟล์ของคุณจะถูกปิดล้อมอยู่ในเครื่องหมายคำพูดเช่นนี้อาจเป็นปัญหากับไฟล์ชุดที่คุณมีสิ่งที่ต้องการและที่คุณต้องการจริงๆxcopy %1 %2 xcopy "%1" "%2"ฉันเพิ่งพบปัญหา แต่ที่ปัญหาไม่ได้ช่องว่าง:

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

คำตอบ:


14

วิธีการแก้ปัญหานี้เป็นเรื่องยุ่งยาก: ปรากฎว่า xcopy กำลังแยกวิเคราะห์เครื่องหมายสแลชในพา ธ ไปยังไบนารีของตัวเอง ใช้งานได้ดี:

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

นอกจากนี้คุณยังสามารถเรียกใช้สิ่งนี้ได้หากคุณPATHกำหนดไว้โดยใช้เครื่องหมายทับซ้ายแทนแบ็กสแลช


นอกจากนี้หากคุณใช้สิ่งนี้เป็น a Post-build eventคุณต้องแน่ใจว่าคุณใส่เครื่องหมายคำพูดรอบเส้นทางเต็ม$(TargetDir)เนื่องจากอาจมีช่องว่างในเส้นทาง:xcopy "$(TargetDir)*.dll" ..\..\Project.Web\bin
Highmastdon

1
สิ่งนี้สามารถเกิดขึ้นได้หากคุณมีเครื่องหมายสแลชในแหล่งที่มาหรือเส้นทางปลายทาง เพียงแค่แทนที่เครื่องหมายสแลชทั้งหมดด้วยแบ็กสแลชในเส้นทางทั้งหมดที่คุณส่งไปยัง xcopy!
Juraj Petrik

0

การค้นพบของฉันคือการที่ฉันต้องการเครื่องหมายทับสองครั้งที่ตัวเลือก

c:\windows\system32\xcopy.exe //f //r //i //d //y * "..\bar\"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.