*

【コマンドプロンプト】バッチでセクション付のINIファイルの読み込み

バッチファイルでINIファイルから値を読み込む

1.INIファイルの用意

以下の「バッチファイル名」.iniを用意

;テスト用セクション1
[Test-Section1]
;テストキー
TEST-Key1=TEST1
TEST-Key2=TEST2

;テスト用セクション2
[Test-Section2]
;テストキー2
Key3=TEST3

2.INIファイルを読み込むバッチファイル

@ECHO OFF
setlocal enabledelayedexpansion
REM ====================================================================
REM
REM INIファイルからキー取得バッチ
REM
REM ※注意事項:①バッチファイルと同じディレクトリにINIファイルがあること
REM             ②INIファイル名はバッチファイルと同じであること
REM
REM
REM ====================================================================

REM ------------------------------------------------
REM INIファイル名を取得
REM ------------------------------------------------
REM INIファイル名のセット
Set INIFILE=%~dp0%~n0.ini

REM ------------------------------------------------
REM サブルーチン:GET-INIの呼び出し
REM ------------------------------------------------
call :GET_INI "Test-Section1" "TEST-Key1" INI_GET_TEST %INIFILE%

echo %INI_GET_TEST%

REM ------------------------------------------------
REM 終了
REM ------------------------------------------------
pause
exit

:GET_INI
REM ====================================================================
REM INIファイルから項目を読み取り返す
REM     %1:   セクション名
REM     %2:   キー名
REM     %3    取得変数名
REM     %4:   INIファイル名
REM
REM   ※キーを取得できない場合は、取得変数に「ERR」を返す
REM
REM ====================================================================

REM ------------------------------------------------
REM ファイルを1行ずつ読み出して、検索
REM ------------------------------------------------

set TempStr=
set SN=
for /f "usebackq eol=; delims== tokens=1,2" %%a in (%4) do (
   set V=%%a&set P=!V:~0,1!!V:~-1,1!&set S=!V:~1,-1!
   if "!P!"=="[]" set SN=!S!
   if "!SN!"=="%~1" if "!V!"=="%~2" (
      set TempStr=%%b
      goto GET_INI_EXIT
   )
)
REM ------------------------------------------------
REM 項目が見つからない場合は、「ERR」を変数へ入力
REM ------------------------------------------------
set TempStr=ERR

:GET_INI_EXIT
REM ------------------------------------------------
REM 取得変数名に入力
REM ------------------------------------------------

set %3=%TempStr%

:EOF

 3.バッチとINIファイルを同じディレクトリに保存

同じディレクトリにバッチとINIを配置

画像では、「get_ini.bat」と「get_ini.ini」としているが、名前が同じであれば、問題なし。

4.実行結果

プログラム上の22行目で、サブルーチン「GET_INI」を呼び出しているので、違うキーを取得したい場合は、書き換える

call :GET_INI "Test-Section1" "TEST-Key1" INI_GET_TEST %INIFILE%

INIから値取得 実行結果

上の結果では、
セクション:Test-Section1
キー:TEST-Key1
から変数:「INI_GET_TEST」に「TEST1」を取得している。

ちなみにセクション、キーが存在しないものを指定された場合は、下記画像の様に取得変数に「ERR」を返すので、エラー分岐も可能。

INIから値取得 実行結果 エラー時

サブルーチン化しているので、使い勝手は良いハズ。。。

Adsense

関連記事

コマンドプロンプト

【コマンドプロンプト】net use で共有フォルダに接続できない場合。

  システム エラー 1219 が発生しました。 同じユーザーによる、サーバー

記事を読む

コマンドプロンプト

【コマンドプロンプト】前日日付、月末日付を変数に取得するバッチ。うるう年対応

コマンドプロンプトを使って前日、指定日、月末日付を変数に取得する。 「SearchDay」に入

記事を読む

コマンドプロンプト

【コマンドプロンプト】前後の不要なスペースの除去(取り除く)

コマンドプロンプトのFOR文とか使って変数に取得しようとすると、取得元のコマンドとかファイルによって

記事を読む

コマンドプロンプト

【コマンドプロンプト】32bit以上の計算をする方法(引き算)

コマンドプロンプトで計算するときに「Set /a ~」で計算式を使うと符号付32bitの間でしか計算

記事を読む

データベース

【コマンドプロンプト】完成版!cmdでSQLの結果を変数に取得

以前、 【コマンドプロンプト】cmdでSQLの結果を変数に取得する方法 を書きましたが、

記事を読む

コマンドプロンプト

【コマンドプロンプト】改行コード CR、LF、CRLFの出力とテキスト書き出し。

仕事でバッチファイルを使っているとログ出力が非常に大事になる。 細かくログを出すことによって、

記事を読む

コマンドプロンプト

【コマンドプロンプト】バッチファイルでCSVを1行ずつ処理をする方法

僕はプログラマーではないので、あまりカッコイイプログラムはかけませんが、CSVファイルを1行ずつ、バ

記事を読む

データベース

【コマンドプロンプト】cmdでSQLの結果を変数に取得する方法

力技の取得方法をご紹介。というかメモ。 題名には偉そうに書きましたが…なかなか良い方法が見つか

記事を読む

Adsense

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Adsense

Microsoft Office
【Access】削除クエリの「指定されたテーブルから削除できませんでした。」の対処法

削除クエリで「指定されたテーブルから削除できませんでした。」と ポッ

Microsoft Office
【PowerPoint】表や図形、画像オブジェクトの位置をピッタリ合わせる方法

パワーポイントで、図形や画像等のオブジェクトの細かい位置調整は、 完

データベース
【SQL Server】Excel VBAのレコードセットを使ってテーブルの一括更新

前々回は読み取り専用でレコードセットへ取得し、結果をエクセルへ書き出し

application
【Visual Studio】デバック、ブレークポイントで止まらない。

Visual Studio 2015でVB.netのプログラムをデバッ

データベース
【SQL Server】Excel VBAでSELECT文を実行してレコードセットへ取得

前回は、テーブルのレコードをVBAで直接更新(Insert/updat

→もっと見る

PAGE TOP ↑