|
|
●DOS/Windowsのバージョン↓ win2000 および、win2003server はじめまして。まっくすです。 過去ログ391)ファイルの文字列置換についてを参照して、 バッチを記述していたのですが、環境変数の取り扱いで行きづまってしまいました。 どなたかご存知でしたらよろしくお願いいたします。 [やりたいこと] 置換対象ファイル名[kihon.txt]の中の置換対象文字列[bbb]を 置換後文字列[xxx]に変換した、置換後ファイル名[okikae.txt]を作成する 例 置換対象ファイル名[kihon.txt] aaabbbcccaaabbbccc $aaabbbccc$aaabbbccc eeefffggg ↓処理実行 置換後ファイル名[okikae.txt] aaaxxxcccaaaxxxccc $aaaxxxccc$aaaxxxccc eeefffggg [行きづまっていること] 置換対象文字列 置換後文字列 が可変の場合の文字列置換用のSETコマンドのパラメータをうまく制御できません。 サンプルソース ※サンプルソースには、等掲示板でご活躍中のじゃく様のソースを参考に記述させて頂いております。 [yobidasshi.bat]※呼出用バッチ replase.bat kihon.txt okikae.txt bbb XXX [replase.bat] rem ** 引数1:置換対象ファイル名 rem ** 引数2:置換後ファイル名称 rem ** 引数3:置換対象文字列 rem ** 引数4:置換後文字列 rem 引数の確認 if "%1"=="" goto ERROR if "%2"=="" goto ERROR if "%3"=="" goto ERROR if "%4"=="" goto ERROR type nul >%2 for /f "tokens=1* delims=" %%a in ( %1 ) do (set line=%%a && CALL :SUB %1 %2 %3 %4) goto ENDEND :SUB set R=%line:%3=%4% ←ここの置換用のパラメータがうまく作成できません。 echo %R%>>%2 pause goto :EOF EXIT /B 0 :ENDEND EXIT /B 0 置換用setコマンドについて対象文字列が 固定でしたらset R=%line:bbb=xxx%と記述できるのですが、 可変なので、set R=%line:%3=%4%とすると、バッチ内部で「set R=3=XXX」と、%でくくる位置がずれてしまっています。 あたりまえのような気もしますが。。。 ながなが記述してしまいましたが、困っています。 どうぞよろしくお願いいたします。 |
|
|
|
|
|
|
|
|