Contoh yang lebih canggih:
⍟ argumen tak terbatas.
⍟ ada di sistem file (baik file
atau directory
?) Atau generik string
.
⍟ tentukan apakah itu file
⍟ tentukan adalah direktori
⍟ tidak ada ekstensi, akan berfungsi di skrip lama!
⍟ kode minimal ☺
@echo off
: loop
:: -------------------------- berargumen?
jika ["% ~ 1"] == [""] (
gema selesai.
kebagian akhir
)
:: -------------------------- ada argumen?
jika tidak ada% ~ s1 (
gema tidak ada
) lain (
gema ada
jika ada% ~ s1 \ NUL (
echo adalah sebuah direktori
) lain (
echo adalah sebuah file
)
)
:: --------------------------
bergeser
goto loop
:akhir
berhenti sebentar
✨ hal lainnya..✨
■ di %~1
- ~
menghapus pembungkus "
atau '
.
■ in %~s1
- the s
makes the path be DOS 8.3 naming
, yang merupakan trik bagus untuk menghindari spasi dalam nama file saat memeriksa sesuatu (dan dengan cara ini tidak perlu membungkus sumber daya dengan lebih banyak "
s.
■ ["%~1"]==[""]
"tidak yakin" jika argumennya adalah file / direktori atau hanya string umum, jadi sebagai gantinya ekspresi menggunakan tanda kurung dan yang asli tidak dimodifikasi %1
(hanya tanpa "
pembungkus, jika ada ..)
jika tidak ada argumen jika kita telah menggunakan shift
dan pointer daftar- argumen telah melewati yang terakhir, ekspresi akan dievaluasi [""]==[""]
.
■ ini sespesifik mungkin tanpa menggunakan lebih banyak trik (ini akan bekerja bahkan di skrip batch windows-95 ...)
■ Contoh pelaksanaan
simpan sebagai identifier.cmd
ia dapat mengidentifikasi argumen tak terbatas (biasanya Anda dibatasi %1
- %9
), ingatlah untuk membungkus argumen dengan koma terbalik, atau gunakan penamaan 8.3, atau seret & lepas (secara otomatis melakukan salah satu dari yang di atas).
ini memungkinkan Anda untuk menjalankan perintah berikut:
⓵ identifier.cmd c:\windows
dan untuk mendapatkan
ada
adalah sebuah direktori
selesai
⓶ identifier.cmd "c:\Program Files (x86)\Microsoft Office\OFFICE11\WINWORD.EXE"
dan untuk mendapatkan
ada
adalah sebuah file
selesai
⓷ dan banyak argumen (tentu saja ini kesepakatan keseluruhan ..)
identifier.cmd c:\windows\system32 c:\hiberfil.sys "c:\pagefile.sys" hello-world
dan untuk mendapatkan
ada
adalah sebuah direktori
ada
adalah sebuah file
ada
adalah sebuah file
tidak ada
selesai.
tentu saja ini bisa jauh lebih kompleks,
tetapi contoh yang bagus harus selalu sederhana dan minimal. :)
Semoga bisa membantu siapa saja :)
diterbitkan di sini: CMD Ninja - Pemrosesan Argumen Tidak Terbatas, Mengidentifikasi Jika Ada Dalam Sistem File, Mengidentifikasi Jika File Atau Direktori
dan berikut adalah contoh kerja yang mengambil sejumlah file APK (aplikasi Android) dan menginstalnya di perangkat Anda melalui debug-console (ADB.exe):
Jadikan Posting Sebelumnya Penginstal APK Massal yang Tidak Menggunakan ADB Install-Multi Syntax