Riverside Learning LABO(Skill/Idea/Code)

よりよいシステムのため工学系と人間系の学習下書きメモ

バッチでファイル更新

■バッチファイルを使ってSampleFileAファイルの特定行を更新する

                                                                                                                              • -

①SampleFileA.iniの内容をライン読みします
(空白行を有効にするために「findstr関数」を利用)
②特定文字列で検索して、修正後の値に置換して一時ファイルに出力します
③検索文字列がない場合はそのまま一時ファイルに出力します。
④最終行までいったら終了しSampleFileA.iniを削除します。
⑤出力した一時ファイルをSampleFileA.iniにリネームします。

                                                                                                                              • -

copy nul SampleFileA.tmp
REM 改行含めて書き出すため「findstr関数」で行数を%%A,元ファイル内容を%%Bに格納する
for /f "tokens=1,2 delims=:" %%A in ('findstr /n "^" SampleFileA.ini') do (
REM 改行含む元ファイルのレコードを"="で分割して置換位置を特定後にOUT変数に格納する
set OUT=
 for /f "tokens=1,2 delims== " %%1 in ( "%%B" ) do (
  if "%%2"=="[検索対象文字列]" set OUT=1&echo %%1=[置換対象文字列]>>SampleFileA.tmp
 )
REM OUT変数が空の場合はそのまま出力する
 if not defined OUT echo.%%B>>SampleFileA. tmp
)
del SampleFileA.ini
ren SampleFileA.tmp SampleFileA.ini
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~