ベストアンサー ※ ChatGPTを利用し、要約された質問です(原文:バッチファイル) バッチファイルで100回繰り返す方法は? 2005/01/20 11:18 この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コマンドが使えると最もよいのですが・・・。 詳しい方がいましたら教えていただけると幸いです。 質問の原文を閉じる 質問の原文を表示する みんなの回答 (2) 専門家の回答 質問者が選んだベストアンサー ベストアンサー kakogome_mame ベストアンサー率32% (9/28) 2005/01/20 13:52 回答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 質問者 お礼 2005/01/20 22:16 とても助かりました。 ありがとうございました! 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 その他の回答 (1) kakogome_mame ベストアンサー率32% (9/28) 2005/01/20 11:38 回答No.1 DOSのBATファイル中で、For文を使って繰り返し処理はできますよ。参考URLに詳しく書いてありますので、ご覧ください。 OSが何かわかりませんが、WindowsNT/2000/XPでは、FOR文は拡張されていますので、FOR文も使える幅が広くなっていると思います。 参考URL: http://forum.nifty.com/fpcu/dosvcmd/batch.htm#for 質問者 補足 2005/01/20 12:57 ありがとうございます。 /Lオプションですね! ためしに1から100まで表示させてみましたがうまくいきました。 実はコマンドを2つをセットにして100回行いたいのですが、 コマンドはひとつだけしか実行できないのでしょうか? ためしに別のバッチファイルをもうひとつ作り、 for文で呼んでみたところ実行は出来たのですが、 バッチファイルが2つになってしまう、 あまりスマートではないような気がする、 というきがするのですが・・・。 あと、演算子はつかえないのでしょうか? たとえば FOR /L %%I IN (1,1,100) DO echo %%I これだとIを単純にそのまま表示していますが、 I*Iを表示したい場合、方法はありますか?? 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 カテゴリ [技術者向] コンピュータープログラミング・開発その他(プログラミング・開発) 関連する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;... と表示されます。 これはバッチ実行前の値です。 ネットワークエンジニアとは?技術職の未来を考える OKWAVE コラム バッチファイルで電卓 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%;. と最初に入力していますし、別のソースをバッチファイルをダブルクリックすることによって実行することはできていますので、なにが原因かわかりません。 考えられる原因と、どうすればバッチファイルをダブルクリックすることによってコンパイル、実行できるかを教えてください。 お願いします。 バッチファイルでレジストリの値を確認したい バッチファイルを使い指定したレジストリの値を確認するのに必要なコマンドはわかりました。しかし、実際にバッチファイルにして実行するとコマンドが永遠に実行され続ける状態となってしまいました。コマンドプロンプト上では正常に値が返ってきます。 バッチファイル実行時にコマンドは1回のみ実行され値が返ってくるようにするには何を付け足せばいいでしょうか。 実際のコマンド内容はこちらです。 バッチを実行してInitialEraYearの値を確認したい reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Calendars\Japanese /v InitialEraYear よろしくお願いいたします。 windows2000のコマンドプロンプトのショートカット毎のバッチファイルの自動実行 お世話になります。 現在、コマンドプロンプトのショートカットを起動した後、 物によって別々のバッチファイルを実行しています。 (複数のディレクトリにショートカットがあります) そこで、ショートカット毎に自動実行されるバッチファイルを 指定したいのですが、どのようにすればいいのか分かりません。 windows98の頃のMS-DOSプロンプトの頃は、 ショートカットのプロパティを見ると、 「バッチファイル」という項目があって、 ショートカット毎に実行できるバッチファイルが 指定できたと思いますが、 windows2000のコマンドプロンプトの場合は どのように行えばいいのでしょうか? AIは使う人の年齢や市場にも影響する?人工知能の可能性 OKWAVE コラム 1つ下のファイルをコピーするバッチファイル コマンドプロンプトで実行するバッチファイル(x.bat)で C:\Aというフォルダのさらに1つ下のフォルダ (このフォルダは1つのみで名前は毎回変化します) の中にあるc.mpgというファイルを D:\Bフォルダにコピーするバッチファイルを 作りたいのですがどのように記述すればよいのでしょうか。 例えば、C:\A\data_20120922195626というフォルダ (data_20120922195626というフォルダ名は任意の名前ですが C:\Aフォルダの中にはこのフォルダ1つしかありません) の中に\c.mpgというファイルがあるとします。 バッチファイル x.bat を実行すると D:\Bフォルダにc.mpgをコピーしたいのです。 なお、data_20120922195626というフォルダの名前は バッチファイルを実行する時には毎回異っていますが バッチファイル実行中は変化しません。 VBscriptやwshなどは使わずWindosXPの標準DOS機能のみで お願いします。(WindosXP SP3) For文のtokensにおけるバッチファイル作成について はじめまして。 バッチファイルにて以下のコマンドを作成して 実行したのですがきちんと実行されません。 コマンドプロンプトを起動して1個1個実行するときちんと 実行されます。どういうことなのでしょうか? <バッチファイル> @echo off cd /d デスクトップ for /F "tokens=2" %i in ( file.txt ) do echo %i >> result.txt pause <file.txtの中身> 1<tab>2<tab>3 4<tab>5<tab>6 バッチファイルの環境設定 以下のようなコマンドで,ウィンドウタイトルやプロンプトや色を指定しましたが,これをバッチファイル上で,バッチファイル実行中のみ設定が有効になり,次にコマンドプロンプトを起動しても標準設定のままになるようにする方法はないでしょうか。 title dosmado prompt dosmado$G color a0 . バッチファイルのPAUSE バッチファイルのPAUSEを使って、 実行するかどうか待機状態のまま 指定時間何もキーを触らなければ 自動的に黒のコマンドプロンプトを 終了させる方法はないですか? バッチファルの置き場所 windowsの[スタート]→[ファイル名を指定して実行]からバッチファイルを実行するには、どこのディレクトリにバッチファイルを保存しておけばいいのでしょうか? 同様に、コマンドプロンプトでどこのディレクトリで実行してもそのバッチファイルが起動できるようにするにはどこのディレクトリに置けばいいのでしょうか? バッチファイルについて バッチファイル(.bat)について不明な点が ありますので、詳しく方ご教授お願い致します。 コマンドプロンプトを開き、対象のバッチファイルを ドラッグアンドドロップし、実行すると正常通りの結果が 得られました。 ただ、バッチファイルをダブルクリックし、実行すると 実行されません。 原因を詳しい方、ご教授お願い致します。 バッチファイル バッチファイルで @cmd /c start move %1 %2 とすると、実行されたあとに新しいコマンドプロンプトのウィンドが開いてしまいます。新しいウィンドウを開かないようにするか、開いたウィンドウを閉じるにはどうすればいいんでしょうか。 バッチファイル Windows2000 コマンド いつも大変お世話になっております。 Windows2000 SP4環境にて下記のバッチファイルがあります。 コード------------------------------------------------------ FOR /F %%i in ('DIR C:\test_201012??.xls /B') DO SET $FILE=%%i COPY C:\%$FILE% D:\test\OK.xls コード------------------------------------------------------ Cドライブ直下の【test_201012??.xls】に一致するファイルを探して 変数【$FILE】に格納して、コピー処理するという単純なバッチファイルです。 ※ちなみに【test_201012】という文字列のファイルは絶対に1ファイルしかない。 WindowsXP SP3環境では問題無く動作しますが、 上記バッチファイルをWindows2000 SP4環境で実行すると以下のようなエラーが発生します。 -----------------〈以下コマンドプロンプト結果抜粋〉----------------- >SET $FILE=ドライブ >SET $FILE=ボリューム >SET $FILE=C:\ >SET $FILE=2010/12/10 >SET $FILE=1 >SET $FILE=0 >COPY C:\0 D:\test\OK.xls 指定されたファイルが見つかりません。 ---------------------------------------------------------------- 2010/12/10は今回の対象ファイルの【test_201012??.xls】で更新日時と同一でした。 ※ちなみにファイル名は【test_20101210.xls】です。 一見ファイル名【test_20101210.xls】を検索しているように見えますが、 変数【$FILE】に複数回いろいろなものが格納され、最終的に【0】が$FILEに格納されてしまい、 その結果、COPY元ファイル名が【0】になって未存在ファイルとしてエラーとなっております。 なぜうまくいかないのでしょうか? Windows2000環境内のFOR構文やDIRコマンドに何かしらの制限があるのでしょうか? もしくはワイルドカードの制限でしょうか? ちなみに【??】を【*】に変更しても結果は同じでした。 別の方法でないとうまくいかないのでしょうか? このバッチファイルのみで処理を完結したいのです。 何か良い方法があるでしょうか? ご存知の方がいれば、ご教授願いますでしょうか? 以上、何卒宜しくお願い致します。 注目のQ&A 「You」や「I」が入った曲といえば? Part2 結婚について考えていない大学生の彼氏について 関東の方に聞きたいです 大阪万博について 駅の清涼飲料水自販機 不倫の慰謝料の請求について 新型コロナウイルスがもたらした功績について教えて 旧姓を使う理由。 回復メディアの保存方法 好きな人を諦める方法 小諸市(長野県)在住でスキーやスノボをする方の用具 カテゴリ [技術者向] コンピューター プログラミング・開発 Microsoft ASPC・C++・C#CGIJavaJavaScriptPerlPHPVisual BasicHTMLXMLCSSFlashAJAXRubySwiftPythonパフォーマンス・チューニングオープンソース開発SEOスマートフォンアプリ開発その他(プログラミング・開発) カテゴリ一覧を見る OKWAVE コラム 突然のトラブル?プリンター・メール・LINE編 携帯料金を賢く見直す!格安SIMと端末選びのポイントは? 友達って必要?友情って何だろう 大震災時の現実とは?私たちができる備え 「結婚相談所は恥ずかしい」は時代遅れ!負け組の誤解と出会いの掴み方 あなたにピッタリな商品が見つかる! OKWAVE セレクト コスメ化粧品 化粧水・クレンジングなど 健康食品・サプリ コンブチャなど バス用品 入浴剤・アミノ酸シャンプーなど スマホアプリ マッチングアプリなど ヘアケア 白髪染めヘアカラーなど インターネット回線 プロバイダ、光回線など
お礼
とても助かりました。 ありがとうございました!