Windows bat komut dosyasında 1'den n'ye kadar olan Loop sayımı için


25

Bir yarasa komut dosyası içinde n kez bir windows komutu çalıştırmak gerekir. Bunu çeşitli programlama dillerinde nasıl yapacağımı biliyorum ama doğrudan windows komut satırından alamıyorum :-(

Ben de böyle bir şey beklerdim

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

veya bu bile (tamamen ciddi olmasa da)

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

Teşekkürler!

DÜZENLE

Java, perl, c veya bu gibi görünen bir yarasa komut dosyası oluşturacak ne olursa olsun bir program yazabilirim

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

ve bunun gibi. Veya hatta "daha iyi":

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

ve sonra onu yürütün ... Ama şey şu , senaryo içinde yinelenecek bir dizi sayı belirtmek için kısa bir yola ihtiyacım var .

Teşekkürler!


1
Buradaki cevaplar tamamen iyi, ama Tanrı aşkına ... parti mi? Gerçekten mi? Daha modern bir dile geçmeyi şiddetle tavsiye ederim.
EBGreen

Bu konuda bir seçimi var gibi gelmiyor.
wolfgangsz

Başka seçenek olmadığını ima eden hiçbir şey görmedim. Nitekim "ne olursa olsun" dilinde yazabileceğini söylüyor, bu yüzden daha fazla bilgiye sahip olmadan bir seçeneğe sahip olduğunu söylüyor.
EBGreen

Beyler, kod
yazmam

1
Bu gerekli olsun veya olmasın - bazen iş için doğru araçtır. PowerShell'i garanti edemezsiniz, bash, python, perl, vs. bir Windows XP veya 2003 sunucu kutusuna kurulsa bile. Toplu mükemmel kabul edilebilir bir çözümdür.
Goyuix

Yanıtlar:


44

Benzer şekilde bunu yapabilirsiniz:

ECHO Start of Loop

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

1,1,5:

(start,step,end)

Ayrıca, bunu bir toplu iş dosyasına gömüyorsanız, değişkenlerinizi öneklemek için çift yüzde işaretini (%%) kullanmanız gerekir, aksi takdirde komut yorumlayıcısı döngü çalıştırmadan önce% i değişkenini değerlendirmeye çalışacaktır.


3
"ECHO Loop Start" sadece başlangıçta değil, her adımda gerçekleştirilir.
sonraki duyuruya kadar duraklatıldı.

1
Ayrıca, bir @işaretin kullanılması komutların komut satırından yürütüldüğü şekilde basılmasını engeller. "... DO @ (..."
sonraki bildirime kadar duraklatıldı.

Bu sadece "FOR" dan sonra / L ile çalışır. Nedenmiş?
raoulsson

1
Yapmak mı? ve bulacaksınız: FOR / L% değişkeni IN (başlangıç, adım, bitiş) DO komutu [komut parametreleri] Ayar, başlangıçtan sona, adım miktarına göre bir sayılar dizisidir. Böylece (1,1,5), 1 2 3 4 5 sekansını üretecekti ve (5, -1,1), sekansı (5 4 3 2 1)
üretecekti

%%iMetninizde kullanmak %ive komut satırında doğrudan çalıştırma için yorum eklemek daha iyidir . Çoğu kullanıcı bunu BAT dosyasında test eder ve neden hata aldıklarını (benim gibi) bulmaya çalışır.
i486


6

Doğrudan komut satırından:

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

Bir toplu iş dosyası kullanarak:

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

ekranlar:

1
2
3
...
100

sayı dizisi 0001 - 00100+ vs. ise?
nwgat
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.