バッチでファイル更新
■バッチファイルを使って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
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~