前提・実現したいこと
Windowsのバッチスクリプトで、ファイルの読み込み→置換→保存をするバッチを作成しています。
処理の中身で遅延環境変数を使う必要がある(と思っている)ので、遅延環境変数を利用する環境です。
発生している問題・エラーメッセージ
以下のようなファイルを読み込みたいときに、エクスクラメーションマークが無視されてしまう。
#####入力ファイル
sampleIn
1aaa 2bbb 3ccc 4!aa 5!bb
#####出力ファイル
sampleOut
1aaa 2bbb 3changed 4aa 5bb
該当のソースコード
batchScript
1@echo off 2 3setlocal ENABLEDELAYEDEXPANSION 4chcp 65001 5 6if exist sampleOut.txt del sampleOut.txt 7 8set changeLineNum=3 9rem changeLineNumはバッチファイル内で変更される可能性があります 10set num=0 11for /f "delims=" %%l in (sampleIn.txt) do ( 12 set /a num=num+1 13 if not !num! EQU !changeLineNum! ( 14 echo %%l >> sampleOut.txt 15 ) else ( 16 echo changed >> sampleOut.txt 17 ) 18)
試したこと
- 11行目
echo %%l >> sampleOut.txt
を
-echo. %%l >> sampleOut.txt
に変更したが、うまくいかなかった。
-echo !%%l! >> sampleOut.txt
に変更したが、うまくいかなかった。
補足情報(FW/ツールのバージョンなど)
windows Version 10.0.18363.1256
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。