Windowsのbatスクリプトで1からnまでカウントするForループ


25

batスクリプトファイル内でWindowsコマンドをn回実行する必要があります。私はさまざまなプログラミング言語でこれを行う方法を知っていますが、Windowsコマンドラインでそれを正しく実現することはできません:-(

私はどちらかのようなものを期待するだろう

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

またはこれも(完全に真剣ではありませんが)

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

ありがとう!

編集

java、perl、c、またはこのようなバットスクリプトを生成するものでプログラムを書くことができます

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

等々。または「より良い」:

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

そして、それを実行します...しかし、問題は、スクリプト内で反復する数値の範囲を指定する簡潔な方法が必要なことです。

ありがとう!


1
ここでの答えは完全に良いですが、神の愛のために...バッチ?本当に?より現代的な言語に移行することを強くお勧めします。
EBGreen 2009

彼は問題の選択肢を持っているように聞こえません。
wolfgangsz

私は選択の余地がないことを示唆するものを見たことがありません。実際のところ、彼は「何でも」の言語で書くことができると言っているので、さらなる情報がなければ彼には選択肢があるように思えます。
EBGreen 2009

Guysは、私は...スクリプトによって近代的な言語で書かれたコードを展開する必要がある
raoulsson

1
必要な場合もそうでない場合もあります-時には、仕事に適したツールです。powershellを保証することはできません。bash、python、perlなどはもちろんWindows XPまたは2003サーバーボックスにインストールされます。バッチは完全に受け入れられるソリューションです。
Goyuix

回答:


44

次のように同様に行うことができます。

ECHO Start of Loop

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

1,1,5は次のようにデコードされます。

(start,step,end)

また、これをバッチファイルに埋め込む場合は、変数の前に二重パーセント記号(%%)を使用する必要があります。そうしないと、コマンドインタープリターがループを実行する前に変数%iを評価しようとします。


3
「ECHO Start of Loop」は、開始だけでなく、各ステップで実行されます。
追って通知があるまで一時停止します。

1
また、@記号を使用すると、コマンドがコマンドラインから実行されるときにコマンドの出力が抑制されます。"... DO @(..."
追って通知があるまで一時停止。

これは、「FOR」の後の/ Lでのみ機能します。なんで?
ラウルソン2009

1
For /?FOR / L%variable IN(start、step、end)DO command [command-parameters]このセットは、開始から終了までの、ステップ量による一連の数字です。(1,1,5)はシーケンス1 2 3 4 5を生成し、(5、-1,1)はシーケンス(5 4 3 2 1)を生成します
EBGreen 09

%%iテキストで使用し、%iコマンドラインで直接実行するためのコメントを追加することをお勧めします。ほとんどのユーザーは、BATファイルでテストし、エラーが発生する理由(私のような)を見つけようとします。
i486


6

コマンドラインから直接:

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

バッチファイルの使用:

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

ディスプレイ:

1
2
3
...
100

番号シーケンスが0001から00100+などの場合はどうなりますか?
nwgat
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.