バッチファイルで100回繰り返す方法は?

このQ&Aのポイント
  • コマンドプロンプトから実行するコマンドをバッチファイルで100回繰り返す方法について教えてください。
  • バッチファイルでの繰り返し処理について、dosのバッチファイルのfor文の使い方がわかりません。
  • 変数やインデントを使ってバッチファイルで100回繰り返す方法を試してみましたが、うまくいきませんでした。
回答を見る
  • ベストアンサー

バッチファイル

コマンドプロンプトから実行するコマンド 2つを、100回繰り返したいのですが、 バッチファイルで100回繰り返すにはどうしたらよいでしょうか? 単純にForで出来ると思っていたのですが、 dosのバッチファイルのforはちょっと違うみたいで、ほかの言語のように for(){繰り返したい処理} ということが出来ないみたいで、 しかも変数<100というのも出来ない? ようで(INで0 1 2 3・・・のように指定するのですね・・・?) 戸惑っています。 変数を使ってインデントして100で終了させようと思ったのですが、変数も使えない・・・??のですね。(使えるのでしょうか??) そこでWSHで一セット分のコマンドのバッチファイルを作ってWSHからそれを100回呼ぼうかと思ったのですが、いまいち方法がわかりません。 また、wshの中で直接dosコマンドが使えると最もよいのですが・・・。 詳しい方がいましたら教えていただけると幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

補足です。 コマンドは1つしか使えないわけではありません。複数コマンドの区切りとして「&」や「&&」、「||」などを使用できます。またBATファイルには演算用のコマンドは参考URLをご覧になってください。 ご所望のBATファイルを書くとこうなります FOR /L %%I IN (1,1,100) DO echo %%I & SET /A %%I * %%I

参考URL:
http://forum.nifty.com/fpcu/dosvcmd/set.htm
azicyan
質問者

お礼

とても助かりました。 ありがとうございました!

その他の回答 (1)

回答No.1

DOSのBATファイル中で、For文を使って繰り返し処理はできますよ。参考URLに詳しく書いてありますので、ご覧ください。 OSが何かわかりませんが、WindowsNT/2000/XPでは、FOR文は拡張されていますので、FOR文も使える幅が広くなっていると思います。

参考URL:
http://forum.nifty.com/fpcu/dosvcmd/batch.htm#for
azicyan
質問者

補足

ありがとうございます。 /Lオプションですね! ためしに1から100まで表示させてみましたがうまくいきました。 実はコマンドを2つをセットにして100回行いたいのですが、 コマンドはひとつだけしか実行できないのでしょうか? ためしに別のバッチファイルをもうひとつ作り、 for文で呼んでみたところ実行は出来たのですが、 バッチファイルが2つになってしまう、 あまりスマートではないような気がする、 というきがするのですが・・・。 あと、演算子はつかえないのでしょうか? たとえば FOR /L %%I IN (1,1,100) DO echo %%I これだとIを単純にそのまま表示していますが、 I*Iを表示したい場合、方法はありますか??

関連するQ&A

  • バッチファイルの変数引継ぎについて

    行き詰ってしまったので、どなたか知恵を授けていただければと思います。 現在、あるソフトウェアの「バッチモード」という機能を使用したバッチを作成していて、構文が > sdcmd batch ***.txt 上記のようにコマンドを羅列したテキストファイルを指定した実行コマンドになります。 sdcmd以降はソフト指定のコマンド以外は使用できず、変数設定ができない為に変数設定とログ保存を兼ねて上記コマンドを記載したバッチを > setlocal EnableDelayedExpansion > set ○=△△△ > set ■=◇◇◇ > call aaa.bat %* >> aaa.log 2>&1 という内容の呼び出しバッチを作成たのですが、テキストファイル内の変数が代入されずに 実行されてしまいます。 cmd上から直接 > setlocal EnableDelayedExpansion > set ○=△△△ > set ■=◇◇◇ > sdcmd batch ***.txt >> aaa.log 2>&1 を実行しても変数の代入は行われませんでした。 cmd上で変数とテキストファイル内のコマンドを手動実行すれば変数は解決できます。 設定した変数を、テキストファイル内の変数値に代入する方法はあるでしょうか。

  • バッチファイルを1個だけしか起動しないようにしたい

    エクスプローラー上から バッチファイル(test.bat)を ダブルクリックしてバッチファイルを実行しています。 通常はコマンドプロンプトが1個だけ表示されて、 バッチファイルが実行して実行が終了すると コマンドプロンプトも閉じられます。 しかし、時々、 コマンドプロンプトが2個表示されることがあります。 つまり、ダブルクリックが、 1回ではなく2回実行されたと誤認識されて、 同じバッチファイル(test.bat)が 2つ起動してしまったと思われます。 当然、その後の処理はおかしくなります。 (バッチファイル(test.bat)の中に 何らかのコードを追加するなどして) 必ず1個だけしか起動しないようにすることは、 できないでしょうか。 (Windows10)

  • バッチファイルで環境変数が設定されません

    よろしくお願いいたします。 Windows XP Pro の command.com において、バッチファイルの中で set コマンドを使って環境変数を設定しても、バッチから抜けると環境変数の設定ができていません。 バッチ終了後の環境変数は全てバッチ開始前と同じ状態です。 command.com のプロンプトで set コマンドを実行すると、環境変数はセットした内容に変化もしくは追加されます。 cmd.exe ではバッチからでもプロンプトからでも set コマンドで環境変数を操作できます。 なぜ command.com 上のバッチから操作できないのかわからず、不便でかないません。 アドバイスをよろしくお願いいたします。 @echo off set foo=word path=c:\ echo %foo% echo %path% 上記バッチを実行すると word c:\ と表示されますが、set コマンドで確認すると FOO は存在しません PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;... と表示されます。 これはバッチ実行前の値です。

  • バッチファイルで電卓

    DOS窓に1+1と入力すると2と表示されるような,バッチファイルを考えています。バッチファイルではなくコマンドプロンプト上で「SET /A 1+1」と入力する方法なら分かりますが,これを応用できないでしょうか。ただし,バッチファイルはコマンドプロンプトからではなくアイコンをダブルクリックして起動させるものとします。

  • バッチファイルの動作についてお教えください

    バッチファイルの勉強中のものですが DOS窓が? C:\ > のときにコマンドプロンプトから下記のように入力したときの それぞれの働きを教えてください。 for /r %i in (*.txt) do copy %i F:\ 動作環境はWin7の32ビットと64ビットです。

  • バッチファイルで<&4と4<%1は何をしているの?

    MS-DOSバッチファイルで、 コマンド1 > ファイル名 2>&1 というような書き方をして、 標準出力だけでなくエラー出力もファイルに書き出すことが できることは理解しています。 そして、数値は0,1,2の3つがあり、各々、 ハンドルSTDIN(キーボード入力) ハンドルSTDOUT(コマンドプロンプトウィンドウへの出力) ハンドルSTDERR(コマンドプロンプトウィンドウへのエラーの出力) であることも理解しています。 しかし、 この数値が3以上で使用されているコードを見かけました。 例えば、 ネット上に以下のコードがあったのですが、 SET /P s1= >NUL <&4 の「>NUL」の部分は、 メッセージが画面に表示されないようにしていると思いますが、 「&4」の部分と 最後の行の4<%1の「4」の部分は何をしているのでしょうか。 実際に動かしてみると、 %1(file1.txt)ファイルの各行が、1行ずつ、 4という名前の変数(ハンドル?)に順番に入っていき、 &4の部分でそれを取り出して、 環境変数s1に代入(セット)しているように見えます。 私は、バッチファイルで、 このような(3以上の数値を使った)使用法を いままでに見たことがありませんでした。 このような使い方を詳しく解説しているサイト がありましたら教えてください。 よろしくお願いします。(Windows10) ---Paste.CMD--------------------------------- @ECHO OFF SETLOCAL ENABLEDELAYEDEXPANSION (FOR /F %%0 IN ('FIND /C /V ""') DO SET a1=%%0) <%1 (FOR /F %%0 IN ('FIND /C /V ""') DO SET a2=%%0) <%2 IF %a1% LSS %a2% SET /A a1=a2 (FOR /L %%k IN (1,1,%a1%) DO ( SET s1= SET s2= SET /P s1= >NUL <&4 SET /P s2= >NUL <&5 ECHO:!s1! !s2! ) ) 4<%1 5<%2 ------------------------------------ 使用例 paste file1.txt file2.txt ------------------------------------

  • Windows2000 バッチファイルコマンドについて

    こんにちは。 バッチファイルコマンド(DOSコマンド?)について質問があります。 まずやりたい事としては、 「前月日付のフォルダを自動作成したい」 です。 当月日付をもってくる為には以下の様なコマンドでできました。 for /f "tokens=1-2" %%l in ('date /t') do set today=%%l for /f "delims=/ tokens=1-2" %%a in ('echo %today%') do set yymm=%%a%%b このコマンドを実行すると、例えば、%yymm%には200507が入っています。 このコマンドを応用して、前月日付(200506)を取得したいのですが、何か言い方法はありませんでしょうか? また、新たなやり方あるのでしたら教えて頂けないでしょうか?

  • こんなバッチファイルってできますか?

    あるディレクトリから実行するプログラムがあります。 このプログラムは、パラメタを取り込みますが、常に同じ物ではありません。 コマンドが長いので、パラメタを入力するだけの状態でコマンドを表示させるにはどうすればよいでしょうか。 具体的にいうと『evtutlnt ustatusall -s 開始番号 -e 終了番号』 このコマンドをDOSプロンプトに表示するバッチファイルを作りたいのです。

  • バッチファイルについて質問です

    質問お願いします!! たとえばコマンドプロンプトから "1.exe" & "2.exe" を実行すると同時に処理(起動)されるのですが バッチファイルにして実行すると1を閉じててから2が起動する。 という感じになるのですがなぜなのでしょうか? そもそもコマンドプロンプトからの実行と バッチファイルでの実行で違いはあるのでしょうか?? コマンドは全くの初心者なのですが急いでいたので 質問させていただきました。。。 windows vista です。 どなかたどうぞよろしくお願い致します。

  • バッチファイルで実行がうまくできない(java)

    バッチファイルを作成してダブルクリックでコンパイル、実行できるようにしたいのですが、うまくいきません。 midiを演奏するプログラムをバッチファイルをダブルクリックして実行しようとすると Exception in thread "main" java.lang.NoSuchMethodError: main と出てしまいます。 コマンドプロンプトで set classpath=%classpath%;. と最初に入力していますし、別のソースをバッチファイルをダブルクリックすることによって実行することはできていますので、なにが原因かわかりません。 考えられる原因と、どうすればバッチファイルをダブルクリックすることによってコンパイル、実行できるかを教えてください。 お願いします。

専門家に質問してみよう