Đoạn% ~ dp0 đã được đề cập, nhưng thực sự có nhiều hơn thế: ký tự sau ~ xác định thông tin được trích xuất.
Không có chữ cái nào dẫn đến việc trả lại tên tệp vá
d - trả về ký tự ổ đĩa
p - trả về đường dẫn
s - trả về đường dẫn ngắn
x - trả về phần mở rộng tệp
Vì vậy, nếu bạn thực thi tập lệnh test.bat bên dưới từ c: \ Temp \ thư mục tên dài \ thư mục,
@echo off
echo %0
echo %~d0
echo %~p0
echo %~dp0
echo %~x0
echo %~s0
echo %~sp0
bạn nhận được đầu ra sau
test
c:
\Temp\long dir name\
c:\Temp\long dir name\
.bat
c:\Temp\LONGDI~1\test.bat
\Temp\LONGDI~1\
Và nếu một tham số được truyền vào tập lệnh của bạn như trong
thử nghiệm c: \ temp \ mysrc \ test.cpp
thì các thao tác tương tự có thể được thực hiện với biến% 1.
Nhưng kết quả của việc mở rộng% 0 phụ thuộc vào vị trí!
Ở "cấp cao nhất" của lô, nó mở rộng thành tên tệp bó hiện tại.
Trong một hàm (gọi), nó mở rộng thành tên hàm.
@echo off
echo %0
call :test
goto :eof
:test
echo %0
echo %~0
echo %~n0
Đầu ra là (batchfile được bắt đầu với myBatch.bat)
myBatch.bat
:test
:test
myBatch