for(windows) - コマンドの使い方

スポンサーリンク

windowsでのcmd.exeやbatファイルでのforのコマンドの使い方です。

この記事のコマンド例はcmd.exeでforコマンドを使うことを想定しています。なので、batファイルなどで利用する場合は、コマンド例を少し修正しなければいけません。

スポンサーリンク

オプションなしのfor文

コマンドプロンプトで実行する場合の基本的なfor文は

であり、実行結果は

となる。

また、ワイルドカードを使用でき、例えばカレントディレクトリが

であり、そして、カレントディレクトリからのディレクトリ構造が

のときに

を実行すると

とカレントディレクトリのすべてのファイルを表示でき、次に

のように、inの次の括弧の中で対象の名前を指定して、実行すると

上のようにカレントディレクトリにあるすべてのtxtファイルを表示できる。

 

 

 

batファイルでfor文を使う場合

for文をbatファイルで用いる場合

で%の代わりに%%と記述する。

 

 

 

for文の/Dオプション

for文の/Dオプションはディレクトリを指定するために用いる。上のディレクトリ構造で

を実行すると

と表示される。

 

 

 

for文の/Rオプション

for文の/Rオプションは基準となるディレクトリからファイルを検索し、その後に各サブディレクトリにあるファイルを走査する。同じように上のツリー構造で

を実行すると

と表示される。

 

 

 

for文の/Lオプション

for文の/LのオプションはC言語の扱うfor文の使い方に似ている。

を実行すると

さらに、

を実行すると

のように表示される。また、

のように数字を直接入力することも可能である。

 

 

 

for文の/Fオプション

for文の/Fのオプションは、ファイルの中身、文字列、コマンドをループの対象として扱うことができる。例えば、上のツリー構造のディレクトリのfile_a.txtの内容は

とし、同じようにfile_b.txtの内容は

で、file_c.txtの内容は

とする。

を実行すると

と表示される。forの/Fはいくつかのオプションをつけることができる。ここでは、eolというオプションをつける。そうするとeolで指定した一文字が最初に現れる文をコメント行として読み飛ばすことができる。

を実行すると、結果は

となる。skipのオプションもつけるとコメント行を含んで、ファイルを先頭から指定した行数を読み飛ばしてくれる。

を実行すると

と表示される。delimsのオプションをつけると、指定した文字が区切り文字として扱うことができる。特に指定をしなければ、タブとスペースとなる。例えば、

を実行すると

と表示される。しかし、この場合では区切り文字で分けられた最初の文字列しか保存することができない。次以降の区切り文字で分けられた文字列を保存するには、tokensのオプションが必要となる。

tokensのオプションは区切り文字で分けられた文字列を数字で指定して保存していくことができ、文字列はforで使われている変数からアルファベット順で順番に保存されていく。

を実行すると

と表示され、

とすると

と表示される。また、tokensのオプションは範囲で指定することもできる。

とすると

tokensのおぷしょんでアスタリスクを用いるとtokensで残りの文字列が区切り文字もそのままで、保存されるべき次のアルファベットの変数に格納される。

を実行すると

となり、

と表示される。

usebackqのオプションはループの対象をファイルだけではなく、文字列やコマンドの出力にもすることができる。また、これはファイルがスペースを含んだファイルの時にも使われる。ファイルの場合は、ダブルクォーテーション(")で囲む。

を実行すると

と表示できる。

文字列の場合はシングルクォーテーション(')で囲む

を実行すると

と表示される。

コマンドの場合はバッククォート(`)で囲む

のように表示することができる。

 

 

 

変数のオプション

コマンドプロンプトのforの変数を使う際にいくつかオプションをつけることもできる。基本的には%と変数の間にチルダ(~)と文字を入れることで使用することができる。

コマンドプロンプトのヘルプを引用すると

%~I  すべての引用句 (") を削除して、%I を展開します。
%~fI  %I を完全修飾パス名に展開します。
%~dI  %I をドライブ文字だけに展開します。
%~pI  %I をパス名だけに展開します。
%~nI  %I をファイル名だけに展開します。
%~xI  %I をファイル拡張子だけに展開します。
%~sI  展開されたパスは短い名前だけを含みます。
%~aI  %I をファイルの属性に展開します。
%~tI  %I ファイルの日付/時刻に展開します。
%~zI  %I ファイルのサイズに展開します。
%~$PATH:I  PATH 環境変数に指定されているディレクトリを
検索し、最初に見つかった完全修飾名に %I を
展開します。
環境変数名が定義されていない場合、または検索
してもファイルが見つからなかった場合は、この
修飾子を指定すると空の文字列に展開されます。

である。例えば、

と表示されていたが、%と変数名の間にチルダ(~)とfを入れ、

を実行させると

のように完全なパスで表示させることができる。

また、

と完全なパスで表示されていたが、

を実行すると

のようにファイル名と拡張子だけを抜き出すことができる。