gotchas ให้ระวัง:
หากคุณดับเบิลคลิกที่ไฟล์แบตช์%0
จะถูกล้อมรอบด้วยเครื่องหมายคำพูด ตัวอย่างเช่นหากคุณบันทึกไฟล์นี้เป็นc:\test.bat
:
@echo %0
@pause
การคลิกสองครั้งที่มันจะเปิดพร้อมท์คำสั่งใหม่พร้อมเอาท์พุท:
"C:\test.bat"
แต่ถ้าคุณเป็นครั้งแรกเปิดคำสั่งที่รวดเร็วและเรียกมันว่าโดยตรงจากคำสั่งที่%0
จะอ้างถึงสิ่งที่คุณได้พิมพ์ หากคุณพิมพ์test.bat
Enterเอาต์พุตของ%0
จะไม่มีเครื่องหมายอัญประกาศเพราะคุณพิมพ์ไม่มีเครื่องหมายคำพูด:
c:\>test.bat
test.bat
หากคุณพิมพ์test
Enterเอาต์พุตของ%0
จะไม่มีส่วนขยายด้วยเนื่องจากคุณพิมพ์ไม่มีส่วนขยาย:
c:\>test
test
เหมือนกันสำหรับ tEsT
Enter:
c:\>tEsT
tEsT
หากคุณพิมพ์"test"
Enterเอาต์พุตของ%0
จะมีเครื่องหมายอัญประกาศ (เนื่องจากคุณพิมพ์) แต่ไม่มีส่วนขยาย:
c:\>"test"
"test"
สุดท้ายหากคุณพิมพ์"C:\test.bat"
ผลลัพธ์จะเหมือนกับคุณคลิกสองครั้ง:
c:\>"C:\test.bat"
"C:\test.bat"
โปรดทราบว่าสิ่งเหล่านี้ไม่ใช่ค่าที่เป็นไปได้ทั้งหมด%0
อาจเป็นเพราะคุณสามารถเรียกใช้สคริปต์จากโฟลเดอร์อื่น:
c:\some_folder>/../teST.bAt
/../teST.bAt
ตัวอย่างทั้งหมดที่แสดงด้านบนจะมีผล%~0
เช่นกันเพราะเอาต์พุตของ%~0
เป็นเพียงเอาต์พุตของ%0
เครื่องหมายคำพูดลบ (ถ้ามี)
echo %~dp0
จะไม่ทำงานที่บรรทัดคำสั่งเฉพาะในไฟล์แบตช์ ดุจ!