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!

raoulsson
sumber
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.

Goyuix
sumber
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

Andy
sumber
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
fmoraesjr
sumber
bagaimana jika urutan nomornya adalah 0001 hingga 00100+ dll?
nwgat