Saya sedang menulis skrip kelelawar di mana saya menjalankan program (seperti javac). Untuk kesederhanaan, saya ingin memeriksa apakah ada perintah sebelum saya menjalankannya. yaitu Jika perintah ada di PATH.
Sebagai contoh,
if (my_command.exe is a recognized command) then (
my_command.exe my_args
) else (
REM Output was probably "'my_command.exe' is not recognized as an internal or external command, operable program or batch file."
REM Do not run my_command.exe
)
Apa cara terbaik untuk melakukan ini di Windows?
windows
command-line
batch
script
pengguna46097
sumber
sumber
Jawaban:
sumber
>nul 2>nul
belakangmycommand
.Kode di bawah ini harus selalu dijalankan dengan bersih tanpa keluaran sampah.
Keluaran:
Kode yang sama dengan one-liner:
Keluaran:
Perhatikan bahwa urutan
&&
dan||
tampaknya penting. Juga, perintah yang keberadaannya Anda uji perlu kembali dengan tingkat kesalahan <= 0 agar ini berfungsi. Semoga perintahnya memiliki /? atau --help argumen atau, seperti java, perintah info versi.sumber
Cara termudah adalah dengan hanya menjalankan perintah, tetapi itu memiliki masalah lain, tentu saja, karena mungkin Anda tidak ingin memulai proses acak.
adalah alternatif yang mencari program di jalur yang terdaftar oleh
%PATH%
variabel lingkungan. Ini pada dasarnya versi batch murniwhich(1)
. Itu bisa dibuat lebih baik tetapi pada dasarnya ini dia.sumber
Untuk situasi saya. Cara termudah mutlak adalah menggunakan || atau && operator.
atau
sumber
Beberapa penyempurnaan untuk versi di bawah ini. Uji bahwa ada perintah dan tekan output yang tidak dibutuhkan.
sumber
WHERE \Windows\System32\cmd.exe
=>INFO: Could not find files for the given pattern(s).
Jika membutuhkan pemasangan alat tambahan tidak masalah, ada
where
perintah dalam kit sumber daya; lihat padanan Windows di mana? .Kalau tidak, untuk versi Windows yang tidak terlalu kuno, itu bisa dilakukan secara murni
cmd
, seperti yang disebutkan dalam Dos executable lookup kecuali PATH .sumber
Saya tahu ini tidak cukup apa yang Anda cari, tetapi dengan sedikit perubahan dalam logika itu harus memenuhi apa yang Anda butuhkan.
Setiap perintah yang dijalankan memiliki kode kembali (alias errorlevel), jika kode kembali adalah 0 (nol), perintah telah berhasil dijalankan, jika kode kembali lebih besar dari 0, ada yang salah.
Lihat di sini untuk detail lebih lanjut.
Sesuatu seperti -
sumber
Sementara semua cara itu mungkin berhasil, mengapa tidak dibangun di jalan?
Jalankan "jika /?" pada baris perintah untuk detail
sumber
PATH
.