มีการพูดถึงชิ้นส่วน% ~ dp0 แล้ว แต่มีมากกว่านั้นจริง: อักขระ (s) หลังจากที่ ~ กำหนดข้อมูลที่ถูกแยกออกมา
ไม่มีผลลัพธ์ตัวอักษรในการส่งคืนไฟล์ปะชื่อ
d - ส่งคืนไดรฟ์อักษร
p - ส่งคืนพา ธ
s - ส่งคืนพา ธ สั้น
x - ส่งคืนนามสกุลไฟล์
ดังนั้นหากคุณเรียกใช้งานสคริปต์ test.bat ด้านล่างจาก c: \ Temp \ ยาวชื่อ dir \ โฟลเดอร์,
@echo off
echo %0
echo %~d0
echo %~p0
echo %~dp0
echo %~x0
echo %~s0
echo %~sp0
คุณได้รับผลลัพธ์ต่อไปนี้
test
c:
\Temp\long dir name\
c:\Temp\long dir name\
.bat
c:\Temp\LONGDI~1\test.bat
\Temp\LONGDI~1\
และหากพารามิเตอร์ถูกส่งผ่านไปยังสคริปต์ของคุณเช่นเดียวกับใน
การทดสอบ c: \ temp \ mysrc \ test.cpp
การปรับแต่งแบบเดียวกันสามารถทำได้ด้วยตัวแปร% 1
แต่ผลลัพธ์ของการขยายตัวของ% 0 ขึ้นอยู่กับตำแหน่ง!
ที่ "ระดับสูงสุด" ของแบทช์จะขยายเป็นชื่อแบทช์ปัจจุบัน
ในฟังก์ชั่น (โทร) มันจะขยายไปยังชื่อฟังก์ชั่น
@echo off
echo %0
call :test
goto :eof
:test
echo %0
echo %~0
echo %~n0
ผลลัพธ์คือ (batchfile เริ่มต้นด้วย myBatch.bat)
myBatch.bat
:test
:test
myBatch