tokensとは?

バッチファイルで出てくるtokensオプションについて解説します。

繰り返し処理のforコマンドによく出てくるオプションです。

tokensは空白で区切られた文字を表示や読み取るときに使用します。

……といっても、よくわからないですよね。実例を見せながら、解説しますので、少しはわかりやすいかなと思います。

この記事が参考になる方

  • tokensオプションを知りたい方
  • 区切り文字を表示したい方

テキストファイルの内容を表示する

下記のテキストファイルの内容をforコマンドで表示します。

私は太郎です。
I am taro.
I am taro.
Iamtaro.

コードはこちら。

@echo off
for /f %%i in (例文.txt) do (
  echo %%i
)

コマンドプロンプトの結果はこちら。

結果として、2行目の半角の空白「 」以降の文字が消されてますね。

これは半角の空白「 」が区切り文字として認識されているため、表示されなくなるバッチファイル特有の現象です。

次節でtokensオプションを使って、すべての文字を表示する方法を解説します。

区切り文字以降も表示する

前節では半角の空白「 」以降の文字が表示されませんでした。

そこでtokensオプションを使って区切り文字以降も表示させます。

コードはこちら。

@echo off
for /f "tokens=1,2,3" %%i in (例文.txt) do (
  echo %%i %%j %%k 
)

前節との違いは「”tokens=1,2,3″」と変数の「%%j %%k」です。

コマンドプロンプトの結果はこちら。

すべての文字が表示されましたね。tokensオプションによって、区切り文字を1と2と3を表示させるようにして、変数にそれぞれ入れました。

ちなみに変数を「%%j %%k」を入れないとうまくいきません。試しに下記のコードを実行してみましょう。

@echo off
for /f "tokens=1,2,3" %%i in (例文.txt) do (
  echo %%i 
)

コマンドプロンプトの結果はこちら。

やはり区切り文字によって、半角の空白「 」以降が表示されませんでした。

この変数の設定がないとうまく表示されません。例2と例3のちがいはこちら。

例2.bat例3.bat
@echo off for /f “tokens=1,2,3” %%i in (例文.txt) do (  echo %%i %%j %%k )@echo off for /f “tokens=1,2,3” %%i in (例文.txt) do (  echo %%i)

「tokens」オプションは「tokens=」の後に取り出したい文字列の番号を記入します。ここではすべて記入したいため、1から3までをコンマ区切りで記入しましたが、1と3番目の文字列が欲しい場合は”tokens=1,3″とします。

ちなみに、上の例のように指定する番号が連番であれば、「tokens=1-3」と書くこともできます。

「tokens」オプションをつけると、「%%b」、「%%c」…に2単語以下が代入されます。for文では「%%a」を指定しているので、アルファベット順の「%%b」、「%%c」が自動的に使用されたのです。「%%a」ではなく「%%i」を指定した場合だと、2単語以下には「%%j」、「%%k」…が使われます。

コメント

タイトルとURLをコピーしました