Untuk menghitung Loop dari 1 ke n dalam skrip Windows Bat


25

Saya perlu menjalankan perintah windows n kali dalam file skrip kelelawar. Saya tahu bagaimana melakukan ini dalam berbagai bahasa pemrograman tetapi tidak bisa mengaturnya dengan benar di baris perintah windows :-(

Saya akan mengharapkan sesuatu seperti itu

for(int i = 0; i < 100; i++) {
   // do something
}

atau bahkan ini (meskipun tidak sepenuhnya serius)

1.upto(100, {
   // do something
}) 

Terima kasih!

EDIT

Saya dapat menulis sebuah program di java, perl, c atau apa pun yang akan menghasilkan skrip kelelawar yang terlihat seperti ini

for %%N in (1 2 3 4 5 6 7 8 9 10 11 12) do echo %%N

dan seterusnya. Atau bahkan "lebih baik":

echo 1
echo 2
echo 3
echo 4
echo 5
echo 6
echo 7
echo 8
echo 9
echo 10
echo 11
echo 12

dan kemudian jalankan ... Tapi masalahnya adalah bahwa saya perlu cara ringkas untuk menentukan kisaran angka untuk iterate melalui dalam script.

Terima kasih!


1
Jawabannya di sini sangat baik, tetapi untuk cinta Tuhan ... batch? Sangat? Saya sangat merekomendasikan pindah ke bahasa yang lebih modern.
EBGreen

Itu tidak terdengar seperti dia punya pilihan dalam masalah ini.
wolfgangsz

Saya belum melihat apa pun yang menyiratkan tidak ada pilihan. Sebenarnya dia bilang dia bisa menulis dalam bahasa "apa pun", jadi saya akan mengatakan bahwa tanpa informasi lebih lanjut sepertinya dia memang punya pilihan.
EBGreen

Guys, saya perlu mengerahkan kode YANG ditulis dalam bahasa modern OLEH script ...
raoulsson

1
Mungkin diperlukan atau tidak diperlukan - terkadang ini adalah alat yang tepat untuk pekerjaan itu. Anda tidak dapat menjamin PowerShell, apalagi bash, python, perl, dll. Diinstal pada kotak server Windows XP atau 2003. Batch adalah solusi yang bisa diterima.
Goyuix

Jawaban:


44

Anda dapat melakukannya seperti ini:

ECHO Start of Loop

FOR /L %i IN (1,1,5) DO (
  ECHO %i
)

1,1,5 diterjemahkan sebagai:

(start,step,end)

Perhatikan juga, jika Anda menanamkan ini dalam file batch, Anda harus menggunakan tanda persen ganda (%%) untuk mengawali variabel Anda, jika tidak, penerjemah perintah akan mencoba mengevaluasi variabel% i sebelum menjalankan loop.


3
"ECHO Start of Loop" akan dieksekusi pada setiap langkah, bukan hanya awal.
Dijeda sampai pemberitahuan lebih lanjut.

1
Juga, menggunakan @tanda akan menekan pencetakan perintah saat dijalankan dari baris perintah. "... DO @ (..."
Dijeda sampai pemberitahuan lebih lanjut.

Ini hanya bekerja dengan / L setelah "UNTUK". Kenapa begitu?
raoulsson

1
Lakukan Untuk /? dan Anda akan menemukan: UNTUK / L% variabel IN (mulai, langkah, akhir) perintah DO [parameter-perintah] Himpunan adalah urutan angka dari awal hingga akhir, dengan jumlah langkah. Jadi (1,1,5) akan menghasilkan urutan 1 2 3 4 5 dan (5, -1,1) akan menghasilkan urutan (5 4 3 2 1)
EBGreen

Lebih baik digunakan %%idalam teks Anda dan menambahkan komentar bahwa itu %iuntuk eksekusi langsung pada baris perintah. Sebagian besar pengguna akan mengujinya dalam file BAT dan mencoba mencari alasan mengapa mereka mendapatkan kesalahan (seperti saya).
i486

8

Sintaksnya adalah

FOR %%A IN (1 2 3) DO ECHO %%A

Artikel bagus di sini dan spesifikasi XP di sini


6

Langsung dari baris perintah:

for /L %n in (1,1,100) do @echo %n

Menggunakan file batch:

@echo off
for /L %%n in (1,1,100) do echo %%n

Menampilkan:

1
2
3
...
100

bagaimana jika urutan nomornya adalah 0001 hingga 00100+ dll?
nwgat
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.