(ก่อนอื่นฉันขอแนะนำไซต์อ้างอิงที่มีประโยชน์นี้เป็นชุด:
http://ss64.com/nt/ )
ถ้าอย่างนั้นก็มีอีกคำอธิบายที่เป็นประโยชน์: http://htipe.wordpress.com/2008/10/09/the-dp0-variable/
ตัวแปร% ~ dp0
ของ% ~ dp0 (ที่เป็นศูนย์) ตัวแปรเมื่ออ้างอิงภายในแฟ้มชุด Windows จะขยายไปยังdตัวอักษร Rive และพี ATH ของไฟล์แบทช์ที่
ตัวแปร% 0-% 9 อ้างถึงพารามิเตอร์บรรทัดคำสั่งของไฟล์แบตช์ % 1-% 9 อ้างถึงอาร์กิวเมนต์บรรทัดคำสั่งหลังชื่อแบตช์ไฟล์ % 0 อ้างถึงไฟล์แบตช์เอง
หากคุณตามตัวอักษรเปอร์เซนต์ (%) ด้วยตัวอักขระ tilde (~) คุณสามารถแทรกตัวแก้ไข (s) ก่อนหมายเลขพารามิเตอร์เพื่อเปลี่ยนวิธีที่ตัวแปรถูกขยาย ตัวปรับ d ขยายไปถึงตัวอักษรชื่อไดรฟ์และตัวดัดแปลง p ขยายไปยังพา ธ ของพารามิเตอร์
ตัวอย่าง: สมมติว่าคุณมีไดเรกทอรีบน C: ชื่อ bat_files และในไดเรกทอรีนั้นเป็นไฟล์ชื่อ example.bat ในกรณีนี้% ~ dp0 (การรวมตัวดัดแปลง d และ p) จะขยายเป็น C: \ bat_files
ลองอ่านบทความ Microsoft นี้สำหรับคำอธิบายโดยละเอียด
นอกจากนี้ตรวจสอบกระทู้ฟอรั่มนี้
และการอ้างอิงที่ชัดเจนยิ่งขึ้นจากที่นี่ :
%CmdCmdLine%
จะส่งคืนบรรทัดคำสั่งทั้งหมดตามที่ส่งไปยัง CMD.EXE
%*
จะส่งคืนส่วนที่เหลือของบรรทัดคำสั่งเริ่มต้นที่อาร์กิวเมนต์บรรทัดคำสั่งแรก (ใน Windows NT 4,% * ยังมีช่องว่างนำหน้าทั้งหมด)
%~dn
จะส่งคืนอักษรระบุไดรฟ์ของ% n (n สามารถอยู่ในช่วงตั้งแต่ 0 ถึง 9) หาก% n เป็นพา ธ หรือชื่อไฟล์ที่ถูกต้อง (ไม่มี UNC)
%~pn
จะส่งคืนไดเรกทอรีของ% n ถ้า% n เป็นพา ธ หรือชื่อไฟล์ที่ถูกต้อง (ไม่มี UNC)
%~nn
จะส่งคืนชื่อไฟล์เพียง% n ถ้า% n เป็นชื่อไฟล์ที่ถูกต้อง
%~xn
จะส่งคืนนามสกุลไฟล์เพียง% n ถ้า% n เป็นชื่อไฟล์ที่ถูกต้อง
%~fn
จะส่งคืนพา ธ แบบเต็มของ% n หาก% n เป็นชื่อไฟล์หรือไดเรกทอรีที่ถูกต้อง
เพิ่ม 1
เพิ่งพบการอ้างอิงที่ดีสำหรับผู้ประกอบการตัวหนอนลึกลับ ~
%~
สตริงเรียกว่าร้อยละหนอนประกอบการ %~0
คุณสามารถค้นหาได้ในสถานการณ์เช่น:
:~
สตริงเรียกว่าลำไส้ใหญ่หนอนประกอบการ %SOME_VAR:~0,-1%
คุณสามารถค้นหาได้ชอบ
เพิ่ม 2 - 1:12 PM 7/6/2018
%1-%9
อ้างถึง args ของบรรทัดคำสั่ง หากพวกเขาไม่ได้ค่าเส้นทางที่ถูกต้อง%~dp1
- ทั้งหมดจะขยายไปยังค่าเช่นเดียวกับ%~dp9
%~dp0
แต่หากพวกเขาเป็นค่าเส้นทางที่ถูกต้องพวกเขาจะขยายไปยังค่าไดรเวอร์ / เส้นทางของตัวเอง
ตัวอย่างเช่น: (batch.bat)
@echo off
@echo ~dp0= %~dp0
@echo ~dp1= %~dp1
@echo ~dp2= %~dp2
@echo on
เรียกใช้ 1:
D:\Workbench>batch arg1 arg2
~dp0= D:\Workbench\
~dp1= D:\Workbench\
~dp2= D:\Workbench\
เรียกใช้ 2:
D:\Workbench>batch c:\123\a.exe e:\abc\b.exe
~dp0= D:\Workbench\
~dp1= c:\123\
~dp2= e:\abc\