Variabel ajaib %
n berisi argumen yang digunakan untuk memanggil file: %0
adalah path ke file bat itu sendiri, %1
adalah argumen pertama setelah, %2
adalah yang kedua dan seterusnya.
Karena argumen sering path file, ada beberapa sintaks tambahan untuk mengekstrak bagian dari path. ~d
adalah drive, ~p
adalah path (tanpa drive), ~n
adalah nama file. Mereka dapat digabungkan jadi ~dp
drive + path.
%~dp0
Oleh karena itu cukup berguna dalam kelelawar: itu adalah folder di mana file kelelawar pelaksana berada.
Anda juga bisa mendapatkan meta info jenis lain tentang file: ~t
is the timestamp, ~z
is the size.
Lihat di sini untuk referensi untuk semua perintah baris perintah. Kode tilde-magic dijelaskan untuk .
echo %~dp0
tidak akan bekerja di command line, hanya di file batch. Duh!%~d0
dan%~d0%
?echo %~pd0
memberikan output yang sama dengan echo%~dp0
(bukannya terbalik seperti yang diharapkan). Juga, nilai%0
adalah berbeda tergantung pada apakah Anda klik dua kali file batch atau menjalankannya dari cmd.Mereka adalah substitusi variabel yang ditingkatkan. Mereka memodifikasi variabel% N yang digunakan dalam file batch. Cukup berguna jika Anda suka pemrograman batch di Windows.
Anda dapat menemukan hal di atas dengan menjalankan
FOR /?
.sumber
Ya, Ada cara pintas lain yang dapat Anda gunakan yang diberikan di bawah ini. Dalam perintah Anda, ~ d0 berarti huruf drive dari argumen 0.
Karena argumen 0 adalah jalur skrip, ia mendapatkan huruf drive untuk Anda. Anda dapat menggunakan pintasan berikut juga.
Ini juga dapat ditemukan langsung di command prompt ketika Anda menjalankan CALL /? atau untuk /?
sumber
Dari Nama file parsing dalam file batch dan lebih banyak idiom - Cara Nyata :
Path (tanpa drive) di mana skrip berada: ~ p0
Drive tempat skrip berada: ~ d0
sumber
%~s0
, nama skrip lengkap.Tip lain yang akan banyak membantu adalah mengatur direktori saat ini ke drive lain yang harus digunakan
%~d0
terlebih dahulucd %~dp0
. Ini akan mengubah direktori ke drive file batch, kemudian mengubah ke foldernya.Untuk #oneLinerLovers,
cd /d %~dp0
akan mengubah drive dan direktori :)Semoga ini bisa membantu seseorang.
sumber
pushd %~dp0
, yang tidak memiliki masalah mengubah drive saat ini, dan memberi Anda bonus tambahan untuk dapatpopd
kembali ke drive / path asli nanti.%~d0
memberi Anda huruf drive argumen 0 (nama skrip),%~p0
path.sumber
Beberapa gotcha yang harus diperhatikan:
Jika Anda mengklik dua kali file batch
%0
akan dikelilingi oleh tanda kutip. Misalnya, jika Anda menyimpan file ini sebagaic:\test.bat
:Mengklik dua kali akan membuka prompt perintah baru dengan output:
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 mengetiktest.bat
Enter, output dari%0
tidak memiliki tanda kutip karena Anda mengetikkan tanda kutip:Jika Anda mengetik
test
Enter, output dari tidak%0
akan memiliki ekstensi juga, karena Anda mengetikkan tidak ada ekstensi:Sama untuk
tEsT
Enter:Jika Anda mengetik
"test"
Enter, output dari%0
akan memiliki tanda kutip (karena Anda mengetiknya) tetapi tidak ada ekstensi:Terakhir, jika Anda mengetik
"C:\test.bat"
, hasilnya akan persis seolah-olah Anda telah mengklik dua kali:Perhatikan bahwa ini tidak semua nilai yang dimungkinkan
%0
karena Anda dapat memanggil skrip dari folder lain:Semua contoh yang ditunjukkan di atas juga akan mempengaruhi
%~0
, karena output%~0
hanyalah output dari%0
tanda kutip minus (jika ada).sumber
Kode ini menjelaskan penggunaan karakter ~ tilda, yang merupakan hal yang paling membingungkan bagi saya. Setelah saya memahami ini, itu membuat banyak hal lebih mudah untuk dipahami:
sumber
Ini menampilkan lokasi file atau direktori saat ini tempat Anda berada. Misalnya; jika file batch Anda ada di direktori desktop, maka "% ~ dp0" akan menampilkan direktori desktop. jika Anda ingin menampilkan direktori saat ini dengan nama file saat ini Anda dapat mengetik "% ~ dp0% ~ n0% ~ x0".
sumber