Seperti yang telah dikatakan orang lain, parameter yang melewati baris perintah dapat diakses dalam file batch dengan notasi %1
ke %9
. Ada juga dua token lain yang dapat Anda gunakan:
%0
adalah nama (file file) yang dapat dieksekusi sebagaimana ditentukan dalam baris perintah .
%*
adalah semua parameter yang ditentukan dalam baris perintah - ini sangat berguna jika Anda ingin meneruskan parameter ke program lain.
Ada juga banyak teknik penting yang harus diperhatikan selain hanya cara mengakses parameter.
Memeriksa apakah suatu parameter telah dilewati
Ini dilakukan dengan konstruksi seperti IF "%~1"==""
, yang benar jika dan hanya jika tidak ada argumen yang disahkan sama sekali. Perhatikan karakter tilde yang menyebabkan tanda kutip sekitarnya dihapus dari nilai %1
; tanpa tilde, Anda akan mendapatkan hasil yang tidak terduga jika nilai tersebut mencakup tanda kutip ganda, termasuk kemungkinan kesalahan sintaksis.
Menangani lebih dari 9 argumen (atau hanya membuat hidup lebih mudah)
Jika Anda perlu mengakses lebih dari 9 argumen, Anda harus menggunakan perintah SHIFT
. Perintah ini menggeser nilai semua argumen satu tempat, sehingga %0
mengambil nilai %1
, %1
mengambil nilai %2
, dll. %9
Mengambil nilai argumen kesepuluh (jika ada), yang tidak tersedia melalui variabel apa pun sebelum memanggil SHIFT
(masukkan perintah SHIFT /?
untuk lebih banyak opsi).
SHIFT
juga berguna ketika Anda ingin dengan mudah memproses parameter tanpa mengharuskan mereka disajikan dalam urutan tertentu. Misalnya, skrip dapat mengenali bendera -a
dan -b
dalam urutan apa pun. Cara yang baik untuk mengurai baris perintah dalam kasus seperti ini adalah
:parse
IF "%~1"=="" GOTO endparse
IF "%~1"=="-a" REM do something
IF "%~1"=="-b" REM do something else
SHIFT
GOTO parse
:endparse
REM ready for action!
Skema ini memungkinkan Anda untuk mengurai baris perintah yang cukup rumit tanpa menjadi gila.
Substitusi parameter batch
Untuk parameter yang mewakili nama file, shell menyediakan banyak fungsi yang terkait dengan bekerja dengan file yang tidak dapat diakses dengan cara lain. Fungsi ini diakses dengan konstruk yang dimulai dengan %~
.
Misalnya, untuk mendapatkan ukuran file yang diteruskan sebagai argumen gunakan
ECHO %~z1
Untuk mendapatkan jalur direktori tempat file batch diluncurkan (sangat berguna!) Dapat Anda gunakan
ECHO %~dp0
Anda dapat melihat berbagai kemampuan ini dengan mengetikkan CALL /?
prompt perintah.