■目的
テキストファイルを開きコピペして書き込むのは面倒な場合、自動的に出力できる方法の1つとして「Windowsバッチ」を使う方法をメモとして残します。
なお、主に以下の内容を知りたい方を対象としています。
'-----------------------------------------
・Winodwsバッチファイルでファイル内容を1行ずつ読み込みたい方
・「for」コマンドを使ったファイル内容の読み込み方法をしりたい方
・スペースを含んだファイルから自在に内容を読み込みたい方
'-----------------------------------------
■参考にしたURL
https://jj-blues.com/cms/wantto-readfilelinewithfor/
■前提条件
読み込むファイルは「テキストファイル形式」とします(例, .txt、.csvなど)。
そのため、wordやExcelなど上記以外の形式はこの記事の対象ではありません。
■記事に記載する内容
①ファイル内容を1行ずつ読み込む
②スペースを含む場合のファイル内容を読み込み方
③任意の列の文字列を読み込み出力する
④区切り文字を指定する
①ファイル内容を1行ずつ読み込む
(1)コードサンプル
@echo off
rem ファイルを1行ずつ読み込む
for /f %%[アルファベット1文字] in ([読み込むファイル]) do (
rem 出力する
[繰り返したい処理]
rem 見やすいように区切りを出力する
echo ---
)
このままだと動かないので以下のように変える。
%%[アルファベット1文字] → %%a
[読み込むファイル] → C:\tmp\4\テスト1_1行ずつ読み込む.txt
[繰り返したい処理] → echo %%a
(2)実際に読み込むファイル
C:\tmp\4\テスト1_1行ずつ読み込む.txt
(3)実行してみる
・(1)のサンプルコードをバッチファイル(read_textfile.bat)として保存する
・コマンドプロンプトを起動しバッチファイルを起動する
②スペースを含む場合のファイル内容を読み込み方
(1)コードサンプル
@echo off
rem スペースを含むテキストファイルを1行ずつ読み込む
for /f "delims=" %%a in ([読み込むファイル]) do (
rem 出力
echo %%a
rem 区切りを挿入
echo ---
)
(2)ポイント
「delims」オプションをつけて「”delims=”」とすること
→理由
・スペースがある場合、その位置で一区切りと判断され「%%a」にははじめのスペースまでの文字列しか代入されないため
⇒結果は以下の通り
・そのため、スペースを区切りとせず一行全体を読み込んで表示させたい場合には、「for」コマンドに「delims」オプションをつける必要がある
(2)実際に読み込むファイル
C:\tmp\4\テスト2_スペースを含むファイルを読み込む.txt
内容はメニューと価格をリスト化したもので、半角スペースで区切っている
(3)実行してみる
・(1)のサンプルコードをバッチファイル(read_textfile_includeSpace.bat)として保存する
・コマンドプロンプトを起動しバッチファイルを起動する
③任意の列の文字列を読み込み出力する
④区切り文字を指定する