Saya perlu menjalankan perintah 100-200 kali, dan sejauh ini penelitian saya menunjukkan bahwa saya harus menyalin / menempelkan 100 salinan perintah ini, ATAU menggunakan for
loop, tetapi for
loop mengharapkan daftar item, maka saya akan perlu 200 file untuk beroperasi, atau daftar 200 item, mengalahkan titik.
Saya lebih suka tidak harus menulis program C dan membaca dokumentasi mengapa saya harus menulis program lain untuk menjalankan program saya untuk tujuan pengujian. Modifikasi program saya sendiri juga bukan pilihan.
Jadi, diberi perintah,, a
bagaimana saya akan menjalankannya N
kali melalui skrip batch?
Catatan: Saya tidak ingin loop tanpa batas
Sebagai contoh, berikut tampilannya di Javascript:
var i;
for (i = 0; i < 100; i++) {
console.log( i );
}
Seperti apa bentuknya dalam skrip batch yang berjalan di Windows?
sumber
Jawaban:
for /l
adalah temanmu:Mulai dari 1, langkah per satu, dan berakhir pada 100.
Gunakan dua
%
jika itu dalam file batch(yang merupakan salah satu hal yang saya sangat benci tentang scripting windows)
Jika Anda memiliki beberapa perintah untuk setiap iterasi dari loop, lakukan ini:
atau dalam file batch
Kunci:
/l
menunjukkan bahwafor
perintah akan beroperasi secara numerik, daripada beroperasi pada set file%x
adalah variabel loop(nilai awal, kenaikan nilai, kondisi akhir [inklusif])
sumber
%x
adalah variabel loop,/l
(bukan\l
) berarti bahwa perintah for akan beroperasi secara numerik, daripada beroperasi pada set file.for /l %x in (1, 1, 100) do echo %x
saya mendapatkan "x tidak diharapkan".Dan untuk beralih pada file direktori:
Anda harus menggunakan "enableDelayedExpansion" dan! FILENAME! bukannya $ FILENAME $. Dalam kasus kedua, DOS akan menafsirkan variabel hanya sekali (sebelum memasuki loop) dan tidak setiap kali loop program.
sumber
Templat untuk loop sederhana namun terhitung:
Contoh: Katakan "Hello World!" 5 kali:
Contoh ini akan menampilkan:
sumber
set /p loopcount="How many loops? "
sehingga Anda dapat menjalankannya dengan input pengguna. Ini lebih praktis.Anda juga dapat mencoba ini sebagai ganti
for
perulangan:Ini cukup kecil dan itu yang saya gunakan sepanjang waktu.
sumber
Atau Anda bisa mengurangi / menambah variabel dengan berapa kali Anda ingin mengulang:
Jelas, menggunakan
FOR /L
adalah jalan raya dan ini adalah jalan belakang yang membutuhkan waktu lebih lama, tetapi mencapai tujuan yang sama.sumber
Anda bisa melakukan sesuatu dengan efek berikut menghindari loop FOR.
sumber
Anda dapat melakukan ini tanpa
for
pernyataan ^. ^:Ini memiliki pemahaman dasar. Berikan saja tes. : P
sumber
Cara yang sangat mendasar untuk mengimplementasikan perulangan dalam pemrograman cmd menggunakan label
sumber
DOS tidak menawarkan mekanisme yang sangat elegan untuk ini, tetapi saya pikir Anda masih bisa membuat kode loop untuk 100 atau 200 iterasi dengan upaya yang masuk akal. Meskipun tidak ada
for
loop numerik , Anda dapat menggunakan string karakter sebagai "variabel loop."Kode loop menggunakan GOTO, dan untuk setiap iterasi gunakan
SET X=%X%@
untuk menambahkan@
tanda lain ke variabel lingkungan X; dan untuk keluar dari loop, bandingkan nilai X dengan string 100 (atau 200)@
tanda.Saya tidak pernah mengatakan ini elegan, tetapi seharusnya berhasil!
sumber
/a
pilihan untukSET
perintah akan mengevaluasi ekspresi numerik untuk nilai sisi kanan. Lihat doucmentation untuk SET . Tidak perlu melakukan trik penggabungan.set /a
di DOS. Untungnya qeustion adalah untukcmd
... (pada saat jawaban ini, judul pertanyaannya adalah "loop script batch DOS"Tidak yakin apakah jawaban seperti ini sudah dikirimkan, tetapi Anda dapat mencoba sesuatu seperti ini:
Variabel% var% akan meningkat satu hingga mencapai 100 di mana program kemudian mengeluarkan bahwa ia telah selesai dieksekusi. Sekali lagi, tidak yakin apakah ini telah dikirimkan atau semacamnya, tapi saya pikir ini mungkin yang paling ringkas.
sumber
Saya menggunakan ini. Ini hampir sama dengan yang lain, tetapi itu hanyalah cara lain untuk menulisnya.
sumber
Jawabannya benar-benar tergantung pada seberapa akrab Anda dengan batch, jika Anda tidak begitu berpengalaman, saya akan merekomendasikan penambahan variabel loop:
Tetapi jika Anda lebih berpengalaman dengan batch, saya akan merekomendasikan yang lebih praktis
for /l %loop in (1, 1, 10) do echo %loop
adalah pilihan yang lebih baik.sumber
Berikut ini adalah skrip templat yang akan saya gunakan.
Apa yang dilakukan adalah ketika dimatikan, kemudian dimatikan kemudian setelah itu menjalankan "Loop" tetapi di tempat itu ia terus "Loop" (saya harap ini membantu.)
sumber
loop yang benar-benar sempurna
Anda dapat mengeditnya dengan mengubah 10 pada baris 5 ke nomor apa pun untuk menunjukkan berapa kali Anda ingin mengulang.
sumber
(Diedit) Saya membuatnya jadi berhenti setelah 100 kali
Ini akan menghasilkan 4 angka acak 1 kali 100 detik. Keluarkan "timeout 1 / nobreak> nul" untuk membuatnya super cepat.
sumber
Mungkin menggunakan goto like
Ini melakukan inf (infinite) loop.
sumber
infinite
sedikit lebih besar dari yang diminta100-200 times
, jadi ini tidak menjawab pertanyaan.Saya punya 2 jawaban Metode 1: Masukkan Javascript ke dalam Batch
(Saya tidak tahu banyak tentang JavaScript)
Metode 2: Loop dalam Batch
(Terima kasih FluorescentGreen5)
sumber