前提・実現したいこと
特定の文字列を置換してファイルを出力するバッチファイルの作成を行っているのですが、想定外の文字列「!(エクスクラメーションマーク)」が削除されて困っています。
指定した文字列の置換を行い「!」が削除されずにファイル出力できるようにしたいです。
よろしくお願い致します。
発生している問題・エラーメッセージ
下図のように「2010」となっている箇所を「2021」に置換しているのですが、「!」が消えてしまいます。
!明](2f0ac4078a0b0ad03b32ddf9c3222054.png)
該当のソースコード
@echo off %~d0 cd %~d0%~p0 chcp 65001 set BEFORE_STRING=2010 set AFTER_STRING=2021 set INPUT_FILE=input.txt set OUTPUT_FILE=output.txt if exist %OUTPUT_FILE% del %OUTPUT_FILE% setlocal enabledelayedexpansion for /f "delims=" %%a in (%INPUT_FILE%) do ( set line=%%a echo !line:%BEFORE_STRING%=%AFTER_STRING%!>> %OUTPUT_FILE% ) endlocal
試したこと
遅延環境変数というのがあるようで、それの対策のために
setlocal enabledelayedexpansion と書いてfor文内で「!」で文字列を囲むような書き方をするのですが、それが原因でファイル内の「!」が削除されるようです。
setlocal enabledelayedexpansion を書かずにfor文を書くと !line:2010=2021! という文字列が並んでしまいます。
補足情報(FW/ツールのバージョンなど)
Windows 10 Home
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/01 15:25
2021/06/01 15:38
2021/06/02 03:09