Apakah mungkin untuk mengatur output pernyataan dari file batch ke variabel, misalnya:
findstr testing > %VARIABLE%
echo %VARIABLE%
windows
batch-file
Dennis
sumber
sumber
Jawaban:
Saya selalu menggunakan USEBACKQ sehingga jika Anda memiliki string untuk memasukkan atau nama file yang panjang, Anda dapat menggunakan tanda kutip ganda tanpa mengacaukan perintah.
Sekarang jika output Anda akan berisi banyak baris, Anda dapat melakukan ini
sumber
ENABLEDELAYEDEXPANSION
|
dalam hal ini tidak berfungsi.^|
di tempat|
, seperti yang dijelaskan di sinicommand
? Saya yakin itu mengembalikan kode non-nol tetapi%ERRORLEVEL%
selalu berisi 0, di mana pun saya mencoba menggunakannya (bahkan di dalamdo
blok). Jadi saya kira beberapa bagian darifor
konstruksi itu menimpanya. BTW Tidak bisa dipercaya betapa gila kode dibutuhkan untuk sesuatu yang sangat mendasar.Saya menemukan utas ini pada hal Interweb itu. Bermuara ke:
Anda juga dapat mengarahkan output dari perintah ke file sementara, dan kemudian memasukkan konten file sementara itu ke dalam variabel Anda, seperti demikian juga. Ini tidak bekerja dengan input multiline.
Kredit ke utas di Perangkat Keras Tom.
sumber
dalam satu baris:
output perintah akan diatur dalam% g kemudian di VAR.
Informasi lebih lanjut: https://ss64.com/nt/for_cmd.html
sumber
Untuk membaca file ...
Untuk Menulis file
catatan; memiliki spasi sebelum karakter <> menyebabkan spasi ditambahkan di akhir variabel, juga
Untuk menambah file, seperti program logger, Pertama buat file dengan kunci enter tunggal di dalamnya yang disebut e.txt
log Anda akan terlihat seperti ini
dan seterusnya
Bagaimanapun beberapa hal berguna
sumber
Semua jawaban ini sangat dekat dengan jawaban yang saya butuhkan. Ini adalah upaya untuk mengembangkannya.
Dalam file Batch
Jika Anda menjalankan dari dalam
.bat
file dan Anda ingin satu baris yang memungkinkan Anda untuk mengekspor perintah yang rumit sepertijq -r ".Credentials.AccessKeyId" c:\temp\mfa-getCreds.json
ke variabel bernamaAWS_ACCESS_KEY
maka Anda ingin ini:Di Baris Perintah
Jika Anda pada
C:\
prompt Anda ingin satu baris yang memungkinkan Anda untuk menjalankan perintah yang rumit sepertijq -r ".Credentials.AccessKeyId" c:\temp\mfa-getCreds.json
untuk variabel bernamaAWS_ACCESS_KEY
maka Anda menginginkan ini:Penjelasan
Satu-satunya perbedaan antara dua jawaban di atas adalah bahwa pada baris perintah, Anda menggunakan% tunggal dalam variabel Anda. Dalam file batch, Anda harus menggandakan pada tanda-tanda persentase (%%).
Karena perintah menyertakan titik dua, tanda kutip, dan tanda kurung, Anda harus memasukkan
USEBACKQ
baris dalam opsi sehingga Anda dapat menggunakan tanda kutip untuk menentukan perintah yang akan dijalankan dan kemudian semua jenis karakter lucu di dalamnya.sumber
Jika Anda tidak ingin menampilkan ke file temp dan kemudian membaca ke dalam variabel, kode ini menyimpan hasil perintah langsung ke dalam variabel:
Jika Anda ingin melampirkan string pencarian dalam tanda kutip ganda:
Jika Anda ingin menyimpan kode ini dalam file batch, tambahkan simbol% ekstra:
Contoh yang berguna untuk menghitung jumlah file dalam direktori & simpan dalam variabel: (menggambarkan perpipaan)
Perhatikan penggunaan tanda kutip tunggal, bukan tanda kutip ganda "atau aksen kubur` dalam tanda kurung perintah. Ini adalah alternatif yang lebih bersih untuk
delims
,tokens
atauusebackq
dalamfor
lingkaran.Diuji pada Win 10 CMD.
sumber
sumber
appcmd
bukan program standar dan saya tidak bisa melihat di mana Anda menetapkan output program ke variabel. Akhirnya Anda perlu penjelasan lebih lanjutSaya telah mengujinya seperti ini dan berhasil:
Dengan memipakan perintah ke variabel, prompt akan memasukkan hasil dari perintah "
Cmd
" ke dalam variabel "Var
".Memperbarui:
Tidak berfungsi, salah saya, skrip yang saya lakukan adalah ini:
Itu sebenarnya menunjukkan katakanlah "
test.txt
", tetapi sebenarnya menunjukkan hasil dari perintah "dir /b *.txt
", bukanecho %var%
. Saya bingung karena kedua outputnya sama.sumber
pipe the command into a variable prompt
maka Anda harus menulisnyadir /b *.txt | SET /P Var=
untuk mendapatkan arah pipa yang benar. PS: Tidak juga begitu!Semoga bantuan ini
sumber