Apa %~dp0 berarti, dan bagaimana cara kerjanya?
Saya menemukan %~dp0
sangat berguna, dan saya banyak menggunakannya untuk membuat file batch yang lebih portabel.
Tapi label itu sendiri tampaknya sangat samar untuk saya... Apa ~
lakukan? Apakah dp
berarti drive dan path? Apakah 0
merujuk pada %0
, path ke file batch yang meliputi nama file?
Atau itu hanya sebuah label aneh?
I'd juga ingin tahu jika itu adalah fitur didokumentasikan, atau sesuatu yang rentan untuk menjadi usang.
964
7
Panggilan
pada command-line memberikan bantuan tentang sintaks ini (yang dapat digunakan di luar, juga, ini adalah tempat di mana bantuan dapat ditemukan).
Ada huruf yang berbeda yang dapat anda gunakan seperti
f
untuk "path lengkap nama",d
untuk huruf drive,p
untuk jalan, dan mereka dapat dikombinasikan.%~
adalah awal untuk masing-masing urutan dan jumlahaku
menunjukkan ia bekerja pada parameter%I
(di mana%0
adalah nama lengkap dari file batch, seperti anda diasumsikan).(Pertama, saya'd ingin merekomendasikan hal ini berguna referensi situs untuk batch: http://ss64.com/nt/)
Kemudian hanya berguna lain penjelasan: http://htipe.wordpress.com/2008/10/09/the-dp0-variable/
Dan yang lebih jelas referensi dari di sini:
%CmdCmdLine%
akan mengembalikan seluruh baris perintah sebagai diteruskan ke CMD.EXE%*
akan kembali sisa dari baris perintah mulai pertama argumen baris perintah (dalam Windows NT 4, %* juga termasuk semua mengarah spasi)%~dn
akan kembali huruf drive %n (n dapat berkisar dari 0 sampai 9) jika %n adalah jalan yang sah atau nama file (tidak ada UNC)%~pn
akan kembali direktori %n jika %n adalah jalan yang sah atau nama file (tidak ada UNC)%~nn
akan mengembalikan nama file hanya dari %n jika %n adalah nama file yang valid%~xn
akan kembali ekstensi file hanya dari %n jika %n adalah nama file yang valid%~fn
akan kembali lintasan yang memenuhi syarat %n jika %n valid nama file atau direktoriTAMBAHKAN 1
Hanya menemukan beberapa referensi yang baik untuk misterius
~
tilde operator.The
%~
string disebut persen tilde operator. Anda dapat menemukannya dalam situasi seperti:%~0
.The
:~
string disebut colon tilde operator. Anda dapat menemukan hal seperti%SOME_VAR:~0,-1%
.TAMBAHKAN 2 - 1:12 PM 7/6/2018
%1-%9
mengacu pada baris perintah arg. Jika mereka tidak ** valid path nilai-nilai,%~dp1
-%~dp9
semua akan memperluas ke nilai yang sama%~dp0
. Tetapi jika mereka sedang valid path nilai-nilai, mereka akan memperluas ke sendiri** driver/path nilai.Misalnya: (batch.bat)
Run 1:
Run 2:
http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx?mfr=true
Variabel
%0
di batch script diatur untuk nama mengeksekusi batch file. The~dp
sintaks khusus antara%
dan0
pada dasarnya mengatakan untuk memperluas variabel%0
untuk menampilkan drive letter and path, yang memberikan anda saat ini direktori yang berisi file batch!%~dp0 memperluas ke direktori saat ini jalur menjalankan file batch.
Untuk mendapatkan pemahaman yang jelas, let's buat batch file dalam sebuah direktori.
dengan isi:
Ketika anda jalankan dari command prompt, anda akan melihat hasil seperti ini:
Tip lain yang akan banyak membantu adalah bahwa untuk mengatur direktori saat ini ke berbeda satu akan memiliki untuk menggunakan
%~d0
pertama, kemudiancd %~dp0
. Ini akan mengubah direktori ke file batch's drive, kemudian mengubah ke folder tersebut.Atau, untuk #oneLinerLovers, seperti @Omni menunjukkan di komentar
cd /d %~dp0
akan perubahan kedua drive dan directory :)Semoga ini bisa membantu seseorang.
Contoh yang bagus dari Strawberry Perl's portable shell launcher:
tidak yakin apa yang negatif 1's melakukan sendiri, tetapi bekerja mengobati!
Sebuah contoh akan menjadi bagus - di sini's sepele satu
itu hanya mencantumkan EKSTENSI setiap file dalam folder saat ini
untuk lebih berguna variabel kombinasi (juga terdaftar di respon sebelumnya) dari CMD prompt jalankan:
MEMBANTU
yang berisi cuplikan iniPara modifikator dapat dikombinasikan untuk mendapatkan senyawa hasil: