Saat bekerja di lingkungan Bash , untuk menetapkan nilai variabel sebagai hasil dari sebuah perintah, saya biasanya melakukan:
var=$(command -args)
dimana var
variabel yang ditetapkan oleh perintah command -args
. Saya kemudian dapat mengakses variabel itu sebagai $var
.
Cara yang lebih konvensional untuk melakukan ini yang kompatibel dengan hampir semua shell Unix adalah:
set var=`command -args`
Yang mengatakan, bagaimana saya bisa mengatur nilai variabel dengan hasil perintah dalam file batch Windows ? Saya sudah mencoba:
set var=command -args
Tapi saya menemukan yang var
diatur ke command -args
daripada output dari perintah.
sumber
for /f "delims=" %a in ('ver') do @set foobar=%a
pada command prompt. digunakanfor /f "delims=" %%a in ('ver') do @set foobar=%%a
dalam file skripbash
. Kemudian Anda dapat menulis perintah bash. Anda juga dapat menjalankan skrip bash.Seseorang perlu berhati-hati, karena perintah batch Windows:
tidak memiliki semantik yang sama dengan pernyataan shell Unix:
Pertimbangkan kasus di mana perintah gagal, menyebabkan kesalahan.
Dalam versi shell Unix, penetapan ke "theValue" masih terjadi, setiap nilai sebelumnya diganti dengan nilai kosong.
Dalam versi batch Windows, itu adalah perintah "untuk" yang menangani kesalahan, dan klausa "lakukan" tidak pernah tercapai - jadi nilai "theValue" sebelumnya akan dipertahankan.
Untuk mendapatkan lebih banyak semantik mirip Unix di skrip batch Windows, Anda harus memastikan bahwa penetapan dilakukan:
Gagal menghapus nilai variabel saat mengonversi skrip Unix ke kumpulan Windows dapat menjadi penyebab kesalahan kecil.
sumber
command
; misfor /f "delims=" %%a in ('command1 ^| command2') do set VAR=%%a
. : .Inilah cara saya melakukannya ketika saya membutuhkan hasil kueri database di file batch saya:
Kuncinya ada di baris 2: "set / p" menetapkan nilai "hasil" ke nilai baris pertama (hanya) di "__query.tmp" melalui operator pengalihan "<".
sumber
Satu-satunya cara saya melihatnya dilakukan adalah jika Anda melakukan ini:
ver
adalah perintah versi untuk Windows dan di sistem saya ia menghasilkan:Sumber
sumber
Dokumen resmi Microsoft untuk
for
perintahsumber