คำตอบของ DavidPostill นั้นยอดเยี่ยม แต่อาจทำให้ผู้มาใหม่สับสนเล็กน้อย ฉันจะพยายามใช้ถ้อยคำใหม่
%ไม่ใช่ตัวละครที่สงวนไว้
มันเป็นตัวละครที่มีความหมายพิเศษกับคำสั่งเชลล์ (aka cmd.exeและcommand.com)
ความแตกต่างคือ: 
- คุณไม่สามารถใช้อักขระที่สงวนไว้เลย (แต่ดูด้านล่าง) 
- คุณอาจสามารถใช้อักขระพิเศษและอักขระยกเว้น - ได้โดยไม่ต้องพิมพ์ตามที่เป็น
กล่าวอีกนัยหนึ่งคุณสามารถสร้างไฟล์หรือโฟลเดอร์ที่มี%ชื่อของพวกเขา คุณสามารถทำได้โดยตรงโดยใช้ windows explorer เนื่องจาก%ไม่มีความหมายพิเศษ ไม่มีความตั้งใจที่จะป้องกันไม่ให้คุณสร้างไฟล์ดังกล่าวที่คอมมานด์พรอมต์ แต่เนื่องจาก%มีความหมายพิเศษที่นั่นคุณต้องใช้ไวยากรณ์ที่ระบุไว้ด้านล่างเพื่อสร้างไฟล์ดังกล่าว
BAT-ไฟล์
หากคุณกำลังเขียนไฟล์แบตช์ (* .bat, * .cmd) ซึ่งถูกเรียกใช้งานโดย command command (หรือที่รู้จักในแอพพลิเคชั่นพรอมต์คำสั่ง) เพื่อใช้งานอย่าง%แท้จริง (เช่นการสร้างไฟล์ด้วย%ในชื่อและไม่ต้องทดแทน ตัวแปรหรือพารามิเตอร์) คุณต้องพิมพ์%%แทน
ตัวอย่างเช่น, 
- คำสั่งecho %windir%ผลิตผลลัพธ์:c:\windows
- อย่างไรก็ตามคำสั่งecho %%windir%%สร้างเอาต์พุต:%windir%
- และอื่น ๆ : คำสั่งecho %%%%windir%%%%ผลิตผลลัพธ์:%%windir%%
ดังนั้นถ้าคุณบันทึกบรรทัดต่อไปนี้test.batและเรียกใช้มันจะสร้างไดเรกทอรีที่ชื่อ%test%สมบูรณ์ด้วยเครื่องหมายเปอร์เซ็นต์:
md %%test%%
หากไม่มีชื่อตัวแปรtestคำสั่งถัดไปนี้จะเทียบเท่ากับคำสั่งสุดท้าย - นอกจากนี้ยังสร้างไดเรกทอรี%test%:
md %test%
... แต่โปรดอย่าทำอย่างนั้นเนื่องจากคำสั่งของคุณจะไม่ทำงานตามที่คุณต้องการเมื่อมีคนสร้างตัวแปรด้วยชื่อนั้น
หากคุณตั้งใจจะใช้คำสั่งforในไฟล์ BAT คุณต้องเพิ่มเป็นสองเท่า%เพื่อให้มันมีความหมายพิเศษในการforสั่งแทนที่จะเป็นเชลล์คำสั่ง:
for %%i in (*.*) do echo %%i
สิ่งนี้จะสร้างรายการไฟล์ในไดเรกทอรีปัจจุบัน (นั่นคือ%%iมีความหมายพิเศษ) และฉันไม่แน่ใจว่าจะสร้างไฟล์ตามตัวอักษรได้อย่างไร%%iโดยไม่ต้องใช้%p%วิธีแก้ปัญหาที่อธิบายไว้ในส่วนถัดไป ( %%%%iไม่ทำงานที่นี่)
%ไม่ใช่อักขระเพียงตัวเดียวที่มีความหมายพิเศษที่พร้อมท์คำสั่ง อื่น ๆ รวมถึง^, <, >, |, (, ), &, ,! "ส่วนใหญ่ (ยกเว้น") สามารถหลบหนีได้ - กล่าวคือนำหน้าด้วยอักขระเลี่ยง^เพื่อแทรกอักขระตามตัวอักษรระงับความหมายพิเศษของมัน ผู้ที่ยังสูญเสียฟังก์ชั่นพิเศษของพวกเขาภายในสตริง doublequoted และรอดด้วยเครื่องหมายทับขวา:" \"คาร์เทตบางตัว ( ^) อาจต้องเพิ่มเป็นสองเท่าภายในสตริงที่มีเครื่องหมายคำพูดสองบรรทัดและจะมีการแทนที่ตัวแปรล่าช้า ( !ความหมายพิเศษ)
พร้อมรับคำสั่ง
น่าเสียดายที่เมื่อพิมพ์คำสั่งลงในหน้าต่างพรอมต์คำสั่งโดยตรง%ตัวละครสองเท่าจะสร้าง%%เช่นวิธีการข้างต้นไม่ทำงานในกรณีนั้น
มีปรากฏเป็นวิธีแก้ปัญหาการใช้ประโยชน์จากการเล่นโวหารในการประมวลผลคำสั่ง - คุณจะได้รับตัวอักษร%โดยพิมพ์หลังจากที่^ %วิธีการนั้นไม่สามารถจะเข้าใจผิดได้แม้ว่า: หากชื่อไฟล์ของคุณอยู่ในเครื่องหมายคำพูดคู่^จะถูกตีความอย่างแท้จริง (และไม่ถูกลบออกเหมือนไม่มีคำพูด)
- คำสั่งecho %windir%ผลิตผลลัพธ์:c:\windows
- คำสั่งecho %^windir%ผลิตผลลัพธ์:%windir%
- คำสั่งecho "%^windir%"สร้างผลลัพธ์:"%^windir%"(พร้อมพิเศษ^- ไม่ใช่สิ่งที่เราต้องการ)
ฉันขอแนะนำวิธีแก้ปัญหาอื่นแทน: 
- สร้างตัวแปรเช่นนี้ set "p=%"
- ใช้เมื่อ%p%ใดก็ตามที่คุณต้องการเครื่องหมายเปอร์เซ็นต์ที่แท้จริง:echo "%p%windir%p%"ตอนนี้จะสร้างผลลัพธ์:"%windir%"
วิธีแก้ปัญหาแบบเดียวกันนี้สามารถใช้เพื่อforรับคำสั่งเปอร์เซ็นต์การลงชื่อเข้าใช้อย่างแท้จริงอย่างไรก็ตามโปรดทราบว่าไม่เหมือนกับไฟล์ BAT เมื่อทำการคีย์forคำสั่งโดยตรงคุณจะไม่ได้รับเครื่องหมายเปอร์เซ็นต์สองเท่า
อักขระที่สงวนไว้สำหรับระบบไฟล์
ตามปกติคุณจะไม่สามารถสร้างไฟล์หรือไดเรกทอรีที่มีอักขระที่สงวนไว้ดังต่อไปนี้ในชื่อ: / ? < > \ : * | ", สัญลักษณ์ NULL และอักขระที่มีรหัส 1 ถึง 31; ยัง.และพื้นที่ไม่สามารถเป็นตัวละครที่ผ่านมา; และชื่อต่อไปนี้ผิดกฎหมาย: com1 com2 com3 com4 com5 com6 com7 com8 com9 lpt1 lpt2 lpt3 lpt4 lpt5 lpt6 lpt7 lpt8 lpt9 con nul prn.
แต่บางข้อ จำกัด เหล่านี้สามารถข้าม prefixing เส้นทางของไฟล์ที่มีเช่นนี้\\?\ \\?\c:\test...\nulอย่างน้อยไฟล์ที่มีชื่อที่สงวนไว้และไฟล์ที่ลงท้ายด้วย space และ dot สามารถจัดการได้
ยิ่งไปกว่านั้นระบบไฟล์ NTFS นั้นรองรับระบบย่อยหลายระบบเช่น DOS, Windows และ POSIX มันเป็นระบบย่อยของ Windows ที่มีข้อ จำกัด ทั้งหมดข้างต้นในขณะที่ POSIX ห้ามเพียง/และสัญลักษณ์ NULL เท่านั้น
GNU / Linux OS (ชุดย่อยของ POSIX) สามารถสร้าง (และลบ) ชื่อไฟล์ / ไดเรกทอรีที่ Windows API ส่วนใหญ่ทำงาน (และดังนั้นโปรแกรม windows) จึงไม่สามารถทำงานได้ ใน Windows XP สามารถทำงานกับมันได้โดยติดตั้ง "Services for Unix Subsystem" (SFU) ฟรี; บน Vista และเครื่องมือของบุคคลที่สามที่จำเป็นสำหรับการทำเช่นนั้น ฉันไม่แน่ใจว่าระบบย่อย ubuntu-on-windows10 ใหม่สามารถทำได้หรือไม่
               
              
<test>ตัวอย่างเช่นฉันสามารถสร้างไฟล์ชื่อ ไม่สามารถทำได้โดยใช้ฟังก์ชันการจัดการไฟล์ของ Windows