小ネタ: Windows のバッチファイルで文字列置換

Windows_logo_Cyan_rgb_D

小ネタ。FORTRAN の複素数を出力したファイルから ( と ) を除去するバッチファイル。( の代わりに ,(カンマ) に置換したりとか。Windows の cmd.exe のみで実行できるようにしてみました。

@echo off
: ファイル名指定が無ければ終了
if %1=="" goto end

: 入力ファイルを作業用ファイルにコピーしてから
set fname=%1
copy %fname% orig >nul

: 入力ファイルを空にする
type nul >%fname%

: 作業用ファイルから1行ずつ読み込んで置換処理
for /f "delims=" %%a in ( orig ) do (
	set line=%%a
	call :sub
)

: 作業用ファイルを削除して終了
del orig
goto end

:sub
: 読み込んだ行から ) は削除。 ( は , に置換。
set tmp=%line%
set tmp=%tmp:(=,%
set tmp=%tmp:)=%
echo %tmp%>>%fname%
goto :EOF

:end

リダイレクト記号なんかはダメっぽいけど、とりあえずちょろっとした処理には使えそう。

スポンサーリンク
レクタングル(大)
レクタングル(大)