ด้วยตัวแปรพรอมต์คุณไม่ควรใช้อักขระพิเศษ ใช้สิ่งspecial codesที่สามารถพบได้prompt /?ทุกครั้งที่ทำได้
ในการตอบกลับความคิดเห็นของคุณ:
กับตัวแปรอื่น ๆ SetLocal EnableDelayedExpansionที่คุณสามารถใช้ จากนั้นอ้างถึงตัวแปรที่มี!s แทน%s
SETLOCAL commandล่าช้าจะทำให้เกิดการขยายตัวของตัวแปรที่จะขยายตัวในเวลาดำเนินการมากกว่าในเวลาที่แยกตัวเลือกนี้เปิดอยู่ด้วย เมื่อการขยายตัวล่าช้าในตัวแปรผลอาจมีการอ้างอิงโดยใช้!variable_name!(นอกเหนือจากปกติ%variable_name%)
เนื่องจากตัวแปรถูกขยายเวลาการประมวลผลและอักขระพิเศษ>(ในกรณีนี้) เป็นพิเศษเฉพาะในเวลาในการแยกวิเคราะห์คุณหลีกเลี่ยงปัญหานี้โดยสิ้นเชิง
ตัวอย่างเช่น:
SetLocal EnableDelayedExpansion
set test=World^>
set test2=Hello !test!
โปรดทราบว่า^เป็นอักขระหลีกเลี่ยงที่อนุญาตให้คุณป้อนอักขระพิเศษ (ตัวแปรจะถูกเก็บเป็นWorld>ดังนั้นถ้าคุณไม่set test=World^^^>นำไปสู่ค่าที่เก็บไว้World^>สิ่งนี้จะไม่ทำงานสำหรับคำถามของคุณ
หนีได้ซับซ้อน ยกตัวอย่างเช่นการตั้งค่าtest2ไปยังตัวอักษร!test!, คุณจำเป็นต้องใช้มิฉะนั้นคุณก็จะได้รับค่าของ^^!test^^! testถ้าฉันต้องการจริง ๆ ฉันปกติเพียงแค่เปลี่ยนจำนวนตัวอักษรยกเว้นจนกว่าจะได้ผลมันง่ายกว่าการพยายามหากฎการแยกวิเคราะห์
$Gแทนการใช้งาน>ในพรอมต์ พิมพ์prompt /?เพื่อดูตัวเลือกทั้งหมด