Sepotong% ~ dp0 telah disebutkan, tetapi sebenarnya ada lebih dari itu: karakter setelah ~ mendefinisikan informasi yang diekstraksi.
Tidak ada huruf yang menghasilkan kembalinya nama file tambalan
d - mengembalikan huruf
p drive - mengembalikan jalur
s - mengembalikan jalur pendek
x - mengembalikan ekstensi file
Jadi jika Anda menjalankan skrip test.bat di bawah ini dari c: \ Temp \ nama dir panjang \ folder,
@echo off
echo %0
echo %~d0
echo %~p0
echo %~dp0
echo %~x0
echo %~s0
echo %~sp0
Anda mendapatkan output berikut
test
c:
\Temp\long dir name\
c:\Temp\long dir name\
.bat
c:\Temp\LONGDI~1\test.bat
\Temp\LONGDI~1\
Dan jika suatu parameter diteruskan ke skrip Anda seperti dalam
pengujian c: \ temp \ mysrc \ test.cpp
manipulasi yang sama dapat dilakukan dengan variabel% 1.
Tetapi hasil perluasan% 0 tergantung pada lokasi!
Pada "tingkat atas" dari batch itu diperluas ke nama file batch saat ini.
Dalam suatu fungsi (panggilan), itu mengembang ke nama fungsi.
@echo off
echo %0
call :test
goto :eof
:test
echo %0
echo %~0
echo %~n0
Outputnya adalah (file batch dimulai dengan myBatch.bat)
myBatch.bat
:test
:test
myBatch