バッチファイルでテキストファイルの内容を読み取ってみた

bat bat

バッチファイルでテキストファイルの内容を読み取って出力してみました。

広告

ファイルの内容を読み取る基本的なコマンド

ファイルの内容を読み取るためには for コマンドを利用します。

まず最初に以下の内容のテキストファイルを用意します。

hogehoge1
hogehoge2
hogehoge3
hogehoge4
hogehoge5

次に以下の内容のバッチファイルを用意します。

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

pause

実行結果

以下のようにファイルの中身が出力できます。

テキストファイルの内容を読み取るコマンドの実行結果

[/f] オプションは指定したファイルの内容を読み取るためのオプションです。
このオプションがないと内容は読み取れません。

[参考] [/f] オプションがない場合

[/f] オプションがない場合、以下のように出力としては指定してテキストファイルの名前が出力され、ファイルの内容を読み込むことはできません

[/f] オプションがない場合の実行結果

実行されているコマンドが分かるように「@echo off」はコメントアウトして実行していますが、「hogehoge.txt」が出力されており、テキストファイルの内容を読み取っていないことが分かります。

スペースがある場合のファイル読み取り

基本は上記のコマンドでファイルの内容を取得できますが、スペースがある場合にはオプションを利用しないとその行のスペースの前で読み取りが終了してしまいます。

これを回避するためには、[delims] オプションを利用します
このオプションを利用することでスペースを含む行を取得することができます。

以下のテキストファイルを読み取ります。

hogehoge 111 //スペース
hogehoge,222 //カンマ
hogehoge;333 //コロン
hogehoge 44 //全角スペース
hogehoge 55 //全角スペース

以下の内容のバッチファイルを用意して実行します。

@echo off
chcp 65001

for /f "delims=" %%i in (hogehoge-2.txt) do (
  echo %%i
)

pause

実行結果

以下のようにすべての行のすべての内容が表示されます。

[delims] オプションを利用を利用して各行の値をすべてと読み込むコマンドの実行結果

[参考] [delims] オプションがない場合

[delims] オプションがない場合には、上記の hogehoge-2.txt における各行のスペース以降の文字が読み取ることができません

・[delims] オプションがないコマンドでの実行結果

[delims] オプションがないコマンドでの実行結果

1行目に関しては hogehoge 移行の文字列を読み込めていませんし、各行のコメントも読み込むことができていないことが分かります。

コメント

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