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.