バッチファイル

バッチファイルで読み込んだファイルのデータを利用してみた

バッチファイルとは、Windows環境で実行できるコマンド列を記述したテキストファイルで、バッチファイルを使って、例えば読み込んだファイルのデータを利用することができる。

今回は、バッチファイルからファイルを読み込み、読み込んだデータを利用してみたので、そのサンプルプログラムを共有する。

前提条件

下記記事の実装が完了していること。

バッチファイルでSELECT文の実行結果をファイルに出力してみたバッチファイルとは、Windows環境で実行できるコマンド列を記述したテキストファイルで、バッチファイルを使うと、データベースに接続して...

サンプルプログラムの作成

サンプルプログラムの構成は、以下の通り。
サンプルプログラムの構成

use_input_data.batの内容は以下の通りで、output.log(変数inputFileで定義)に出力している。

@echo off

rem 結果の取得元となるファイル名
set inputFile=output.log

rem ファイル(inputFileに指定した値)からmaxIdを含む行を取得し、変数tmpMaxIdに格納する
rem ファイル(inputFileに指定した値)に、maxIdを含む行が複数ある場合は、最終行が有効になる
for /f "usebackq delims=" %%A in (`findstr maxId %inputFile%`) do set tmpMaxId=%%A

rem ファイル(inputFileに指定した値)からminIdを含む行を取得し、変数tmpMinIdに格納する
rem ファイル(inputFileに指定した値)に、minIdを含む行が複数ある場合は、最終行が有効になる
for /f "usebackq delims=" %%A in (`findstr minId %inputFile%`) do set tmpMinId=%%A

rem tmpMaxId, tmpMinIdの値を出力する
echo *** tmpMaxId, tmpMinIdの値 ***
echo %tmpMaxId%
echo %tmpMinId%
echo.

rem 変数から数値部分のみ抜き出す
set maxId=%tmpMaxId:maxId: =%
set minId=%tmpMinId:minId: =%

rem maxId, minIdの値を出力する
echo *** tmpMaxId, tmpMinIdから抜き出した数値 ***
echo %maxId%
echo %minId%
echo.

rem maxId, minIdの値をそれぞれ2倍する
set /a maxIdMul2=%maxId%*2
set /a minIdMul2=%minId%*2

rem maxId, minIdの値をそれぞれ2倍した値を出力する
echo *** tmpMaxId, tmpMinIdから抜き出した数値を2倍した値 ***
echo %maxIdMul2%
echo %minIdMul2%
echo.

rem maxIdの値を比較した結果を出力する
echo *** tmpMaxId, tmpMinIdから抜き出した数値を比較した結果 ***
if %maxId% equ 4 (
   echo tmpMaxIdから抜き出した数値は4です。
) else (
   echo tmpMaxIdから抜き出した数値は4ではありません。
)

if %minId% neq 1 (
   echo tmpMinIdから抜き出した数値は1ではありません。
) else (
   echo tmpMinIdから抜き出した数値は1です。
)

また、上記プログラムで読み込むoutput.logの内容は、前提条件の記事で作成したファイルと同じで、以下の通り。
前提条件

サンプルプログラムの実行結果

サンプルプログラムの実行結果は、以下の通り。

1) コマンドプロンプトを起動し、バッチファイルが存在するディレクトリ(C:\tmp)に移動し、各ファイルの存在を確認する。
サンプルプログラムの実行結果_1

2) バッチファイル(use_input_data.bat)を実行する。実行すると、コマンドプロンプトには以下の値が表示される。
サンプルプログラムの実行結果_2

要点まとめ

  • バッチファイルとは、Windows環境で実行できるコマンド列を記述したテキストファイルで、バッチファイルを使うと、読み込んだファイルのデータを利用することができる。
  • ファイルから特定の文字列を含む行を抜き出すには、findstrコマンドを利用する。