Beberapa gotcha yang harus diperhatikan:
Jika Anda mengklik dua kali file batch %0
akan dikelilingi oleh tanda kutip. Misalnya, jika Anda menyimpan file ini sebagai c:\test.bat
:
@echo %0
@pause
Mengklik dua kali akan membuka prompt perintah baru dengan output:
"C:\test.bat"
Tetapi jika Anda pertama kali membuka prompt perintah dan memanggilnya langsung dari prompt perintah itu, %0
akan merujuk pada apa pun yang Anda ketikkan . Jika Anda mengetik test.bat
Enter, output dari %0
tidak memiliki tanda kutip karena Anda mengetikkan tanda kutip:
c:\>test.bat
test.bat
Jika Anda mengetik test
Enter, output dari tidak %0
akan memiliki ekstensi juga, karena Anda mengetikkan tidak ada ekstensi:
c:\>test
test
Sama untuk tEsT
Enter:
c:\>tEsT
tEsT
Jika Anda mengetik "test"
Enter, output dari %0
akan memiliki tanda kutip (karena Anda mengetiknya) tetapi tidak ada ekstensi:
c:\>"test"
"test"
Terakhir, jika Anda mengetik "C:\test.bat"
, hasilnya akan persis seolah-olah Anda telah mengklik dua kali:
c:\>"C:\test.bat"
"C:\test.bat"
Perhatikan bahwa ini tidak semua nilai yang dimungkinkan %0
karena Anda dapat memanggil skrip dari folder lain:
c:\some_folder>/../teST.bAt
/../teST.bAt
Semua contoh yang ditunjukkan di atas juga akan mempengaruhi %~0
, karena output %~0
hanyalah output dari %0
tanda kutip minus (jika ada).
echo %~dp0
tidak akan bekerja di command line, hanya di file batch. Duh!