※この記事は「2021年4月1日」に更新しました。
コマンドプロンプト講座です。
前回は指定したキーの入力を受け付けるコマンドについて紹介しました。
今回は、forコマンドについて。
C言語などの高級言語を使ったことがある人はご存知だとは思いますが、バッチファイルで使う場合、なかなか難しいコマンドなので解説していきます。
forコマンドについて
forコマンドは、基本的に繰り返し処理を行うためのコマンドです。
ただ、繰り返し処理といっても、様々なケースが想定できます。
対象もファイルやフォルダに対して行う場合もあれば、テキストファイル内の文字列に対して行う場合もあります。
コマンドの書式
forコマンドの書式は、以下の通りです。
for オプション %%変数 in 対象 do 処理
オプションは以下の通りです。
- /d
- フォルダ名が対象。
- /r
- 指定パス以下の全てのサブフォルダが対象。
- /l
- 開始、増分、終了 という形式を有効にする。
- /f
- テキストファイル内の文字列に対してトークンを取り出す(解析文字列に従って)。
おそらく、これだけだとわかりにくいと思うので、色々なサンプルを紹介していきたいと思います。
指定した回数繰り返す
指定した回数繰り返す使い方です。
プログラミング経験のある方だと一番馴染みのある使い方だと思います。
サンプルバッチファイルを紹介します。
@echo off for /l %%a in (1,1,5) do (echo %%a) pause
ちなみに変数名は、a~z のアルファベット1文字で指定します。
結果は以下の通りです。
ファイルを対象として繰り返す
ファイルを対象として繰り返す使い方です。
これに関しては、ファイル名を一括で変更する方法について書いた記事を見ていただけるとわかるかと思います。
テキストファイル内のデータを行単位で読んで繰り返す
テキストファイル内のデータを行単位で読んで繰り返す使い方です。
まず、練習用のテキストファイルを用意します(sample.txt)。
ワグナス ノエル ロックブーケ スービエ ダンターグ ボクオーン クジンシー
このテキストファイルは、半角スペースを区切り文字としてそれぞれ文字列が存在します。
サンプルバッチファイルを紹介します。
@echo off echo ---------- for /f "TOKENS=1" %%a in (sample.txt) do ( echo %%a echo ---------- ) pause
TOKENS というのは、区切り文字で区切られた指定番目のデータを取り出すときに使います。
つまり、それぞれの行に対して、1番目のデータだけ出力しているというわけです。
実行結果は以下の通りです。
TOKENS の後ろに delims=, とすると区切り文字を ,(コンマ)にすることができます。
最後に
いかがでしょうか。
今回は、forコマンドについて、解説しました。
現代の既存の関数やライブラリがいかに優秀かがわかると思います。
しかし、個人的にはこのシンプルな環境と制約がある環境も経験してみると悪くないなと思っています。