目次
文字列の配列を順に読み込む
ここで言う「文字列の配列」とは、
のようにスペースで区切られた一行の文字列のことです。これをバッチファイル内で「color」という変数に入れ、変数「color」を表示させてみます。
1 2 3 4 5 |
@echo off set color=red blue green yellow pink echo %color% |
実行結果は以下の通りです。
当然、すべての文字列がまとめて一つの文字列として代入されています。
この一行の各単語を一つずつ読み込むには、「for」コマンドを使って分割します。以下にそのバッチファイルを示します。
1 2 3 4 5 6 |
@echo off set color=red blue green yellow pink for %%a in (%color%) do ( echo %%a ) |
以下、実行結果です。
「for」を使ってスペース区切りの文字列を読み込むと、スペースまでを一単語と認識し、「%%a」に一単語ずつ代入しループを回します。以上の実行結果から、一単語ずつ分割されたことが分かります。
スペース以外の区切り文字で区切られている場合
配列がスペースではなく別の文字で区切られている場合、例えば「,」で区切られている場合はスペースと同様です。
1 2 3 4 5 6 |
@echo off set color=red,blue,green,yellow,pink for %%a in (%color%) do ( echo %%a ) |
前節のバッチファイルの「color」に代入する文字列が「,」区切りになりました。以下、実行結果です。
これは、「,」も区切り文字として認識されているためです。同様に、「;」も区切り文字として使用できます。
それ以外の文字で区切られている場合、その文字は区切り文字として認識されませんので、一度その文字を区切り文字に置き換えてやる必要があります。例えば「:」で区切られている場合には、
1 2 3 4 5 6 7 |
@echo off set color=red:blue:green:yellow:pink set color=%color::=,% for %%a in (%color%) do ( echo %%a ) |
の4行目で行っているように、文字列「color」に含まれている「:」を「,」に置換する操作が追加されています。
文字列置換の詳しい説明は「文字列を置換する -やりたいことから検索-」を参照して下さい。