【コマンドプロンプト】バッチでセクション付の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ファイルを同じディレクトリに保存
画像では、「get_ini.bat」と「get_ini.ini」としているが、名前が同じであれば、問題なし。
4.実行結果
プログラム上の22行目で、サブルーチン「GET_INI」を呼び出しているので、違うキーを取得したい場合は、書き換える
call :GET_INI "Test-Section1" "TEST-Key1" INI_GET_TEST %INIFILE%
上の結果では、
セクション:Test-Section1
キー:TEST-Key1
から変数:「INI_GET_TEST」に「TEST1」を取得している。
ちなみにセクション、キーが存在しないものを指定された場合は、下記画像の様に取得変数に「ERR」を返すので、エラー分岐も可能。
サブルーチン化しているので、使い勝手は良いハズ。。。
Adsense
関連記事
-
-
【コマンドプロンプト】32bit以上の計算をする方法(引き算)
コマンドプロンプトで計算するときに「Set /a ~」で計算式を使うと符号付32bitの間でしか計算
-
-
【コマンドプロンプト】前後の不要なスペースの除去(取り除く)
コマンドプロンプトのFOR文とか使って変数に取得しようとすると、取得元のコマンドとかファイルによって
-
-
【コマンドプロンプト】改行コード CR、LF、CRLFの出力とテキスト書き出し。
仕事でバッチファイルを使っているとログ出力が非常に大事になる。 細かくログを出すことによって、
-
-
【コマンドプロンプト】前日日付、月末日付を変数に取得するバッチ。うるう年対応
コマンドプロンプトを使って前日、指定日、月末日付を変数に取得する。 「SearchDay」に入
-
-
【コマンドプロンプト】完成版!cmdでSQLの結果を変数に取得
以前、 【コマンドプロンプト】cmdでSQLの結果を変数に取得する方法 を書きましたが、
-
-
【コマンドプロンプト】net use で共有フォルダに接続できない場合。
システム エラー 1219 が発生しました。 同じユーザーによる、サーバー
-
-
【コマンドプロンプト】バッチファイルでCSVを1行ずつ処理をする方法
僕はプログラマーではないので、あまりカッコイイプログラムはかけませんが、CSVファイルを1行ずつ、バ
-
-
【コマンドプロンプト】cmdでSQLの結果を変数に取得する方法
力技の取得方法をご紹介。というかメモ。 題名には偉そうに書きましたが…なかなか良い方法が見つか