แม้จะมีคำตอบให้ภาพลวงตาที่ใช้งานได้ความจริงก็คือคุณไม่สามารถแอบเข้าไปในช่องว่างในการโต้แย้ง cmd ปกติ นี่เป็นเรื่องง่ายที่จะพิสูจน์:
บันทึก " echo %1" test.batเป็น ไฟล์ชุดนี้จะส่งออกอาร์กิวเมนต์แรกซึ่ง cmd ผ่านเรา
ตอนนี้พยายามและเรียกใช้test.batการตั้งค่าของการ%1 foo bar(โปรดทราบว่ามีช่องว่างระหว่างfooและbar.)
ทดลองและข้อผิดพลาดไม่กี่ปีและตระหนักดีว่ามีวิธีที่จะทำมันไม่มี คนจะแนะนำที่จะหลบหนีโดยใช้^แต่จะไม่เอาท์พุทtest.bat foo^ barfoo bar
ดังนั้นไม่มีทางที่จะได้รับผลไม่foo barและที่ใกล้เคียงที่สุดที่เราได้รับคือการทำงานtest.bat foo" "barซึ่งเป็นผู้ผลิตfoo" "barหรือการทำงานซึ่งเป็นผู้ผลิตtest.bat "foo bar""foo bar"
ตอนนี้เหตุผลที่คำตอบอื่น ๆปรากฏในการทำงานเป็นเพราะcdไม่เป็นของตัวเองแยกเพิ่มเติมแยกจากพฤติกรรมของการโต้แย้งปกติผ่าน (ปกติ%1, %2, %3และ ฯลฯ ในไฟล์ชุดทั่วไป)
ตัวอย่างเช่นพิจารณาคำสั่งเฉพาะ:
cd c:\documents and settings \some folder with spaces
ทำไมมันทำงาน นี่คือสาเหตุที่cd ตัวเองทำบางสิ่งบางอย่างที่เทียบเท่ากับการเข้าร่วม 7 ข้อโต้แย้งปกติเป็นหนึ่งตรรกะหนึ่ง ตามการโต้แย้ง cmd ผ่านบรรทัดฐานเราจะเห็นข้อโต้แย้งที่ 7:
c:\documents
and
settings
\some
folder
with
spaces
ราวกับว่าcdได้เข้าร่วมการขัดแย้งทั้ง 7 ข้อในตรรกะเดียวการทำสิ่งที่คล้ายกับarray.join(" ")ซึ่งก่อให้เกิดเส้นทาง:
c:\documents and settings \some folder with spaces
โปรดทราบว่าพฤติกรรมนี้เป็นสิ่งที่แปลกประหลาดcdเฉพาะ (และฟังก์ชั่นอื่น ๆ ) มันไม่มีส่วนเกี่ยวข้องกับการผ่านการโต้แย้งปกติ
แน่นอนcdมีลักษณะผิดปกติอื่น โปรดจำไว้ว่าเราระบุไว้ข้างต้นว่าเราไม่สามารถรับผลลัพธ์ได้foo barหรือไม่ ผลลัพธ์ที่ใกล้เคียงที่สุดที่เราจะได้รับคือการทำงาน:
test.bat foo" "bar
ซึ่งผลิตfoo" "barหรือ:
test.bat "foo bar"
ซึ่งผลิต"foo bar"หรือ:
test.bat "foo "bar
ซึ่งผลิต"foo "barหรือ:
test.bat foo" bar"
ซึ่งผลิตfoo" bar"หรือ:
test.bat "foo b"ar
ซึ่งผลิต"foo b"arหรือ:
test.bat fo"o bar"
ซึ่งผลิตfo"o bar"หรือ:
test.bat fo"o ba"r
ซึ่งผลิตfo"o ba"rหรือ:
test.bat "fo"o" bar"
ซึ่งผลิต"fo"o" bar"หรือ:
test.bat "f""o""o"" ""b""a""r":
ซึ่งผลิต"f""o""o"" ""b""a""r"หรือแม้กระทั่ง:
test.bat """"f"""o""""o"" ""ba"""r"""""""""":
""""f"""o""""o"" ""ba"""r""""""""""ซึ่งเป็นผู้ผลิต
ตัวอย่างข้างต้นทั้งหมดมีความคล้ายคลึงกันอย่างใดอย่างหนึ่งซึ่งพวกเขาจะผลิตfoo barหลังจากเราตัดออก"ตัวอักษร cdผู้เขียนจะต้องตระหนักถึงสิ่งนี้ด้วย ... หากเราต้องอนุมานจากcdพฤติกรรมที่แปลกประหลาดซึ่งตัดสิ่งที่"ได้รับออกไปทำให้คำสั่งทั้งหมดเหล่านี้ทำงานได้:
cd c:\documents and settings
cd "c:\documents and settings"
cd "c:"\"documents and settings"
cd c:\"documents" "and" "settings"
cd c:\"docu"ments an"d set"tings"
cd c:"\"docu"ments an"d set"ti"""ngs
cd "c"":""\"docu"ments an"d set"ti"""ngs
cd "c"":""\"do""cu"me"nts a"n""d set"ti"""ngs
cd c"""":""""\"""d"""oc""""u"me"""""nt"s a"n""d set"""""""ti""""ngs