Windowsバッチ ファイル出力について
Windowsバッチでテキストファイルから読み込んだデータの文字を一部変更して、ファイル出力を行うプログラムを作成しています。
for分の中で、変数の中身を更新した後にファイル出力を行うのですが
「echo !line:!before_string!=!after_string!!>>!OUT_Flag!」
以上の書き方で文字変換をした後にファイル出力ができなくて困っています。
「echo !line:%before_string%=%after_string%!>>!OUT_Flag!」
だと、変数の中身が更新される前の状態の値を参照してしまいます。
ソースコードを張るので、アドバイスをいただきたいです。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
windowsバッチ
echo off
rem 処理ステータスをゼロセット
set status=0
set end_status=0
rem ファイル情報をセット
set IN_FILE[0]=a.TXT
set IN_FILE[1]=b.TXT
set OUT_FILE[0]=OUTFILE.TXT
set OUT_FILE[1]=OUTFILE1.TXT
set f_String = 文字取得
set before_string=51
set after_string=21
set b_dammyString=ダミー
set a_dammyString=ダミー
setlocal enabledelayedexpansion
set I=0
set Flag=!IN_FILE[%I%]!
set OUT_Flag=!OUT_FILE[%I%]!
rem IN_FILEの数繰り返し処理を行う
if defined Flag (
call echo !Flag!
rem IN_FILEの1行目を読み込んで文字変換をしファイル出力を行う
for /f "delims=" %%a in (!Flag!) do (
set line=%%a
if %I%==0 (
set f_String=!line:~20,2!
)
if !f_String!==1 ( set before_string=1 set after_string=33 ) else if !f_String!==2 ( set before_string=2 set after_string=22 ) else if !f_String!==3 ( set before_string=3 set after_string=23 ) else if !f_String!==4 ( set before_string=4 set after_string=24 ) echo !line:!before_string!=!after_string!!>>!OUT_Flag! echo !before_string! echo !after_string! echo !OUT_Flag! GOTO :END
)
)
:END
pause
SET STATUS=%END_STATUS%
exit %STATUS%
試したこと
echo !line:!before_string!=!after_string!!>>!OUT_Flag!
上記について、!!の位置を変えたり増やしたりしました。
その結果は、出力したファイルに「line:before_string after_string」と記載される状態です。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/12 00:14