【batファイル】ファイル名変更とファイル内文字列の変更を自動で行う

私の使用している形式だと脳波の計測データは3つのファイルに分けて保存されています.ファイル内には依存関係を記述した部分がありファイルの名前を変えるだけではうまく動かないようになっていました.

そこで今回はフォルダ内の全ての脳波ファイル名とファイル内の相互関係を記載した部分を自動的に書き替えるバッチファイルを作成しました.

今回のbatファイル自体は少し変更することでいろんな用途に使えると思います.

setlocal enabledelayedexpansion
set num=1

for %%a in (*.eeg) do (
  copy %%a trial!num!
  sed -e "s/%%~na/trial!num!/g" ./%%~na.vhdr > trial!num!.vhdr
  sed -e "s/%%~na/trial!num!/g" ./%%~na.vmrk > trial!num!.vmrk
  set /a num+=1
)
スポンサーリンク

ポイント1遅延環境変数

setlocal enabledelayedexpansion

このsetlocal enabledelayedexpansion はbatファイルの変数の展開を逐次的に行うための宣言です.この宣言を行うと!で囲った変数がループのたびにちゃんと更新されるようになります.setのあとの/aも重要です.これも/aの後の変数を遅延展開することを指示するオプションで,おかげで変数numがループのたびに更新されるようになっています.

逆に普段通り%で囲ってしまうとループの最初に変数が全て同じ値で展開されてしまい,うまく動きません.

スポンサーリンク

ポイント2 ファイル内文字列の編集

sed -e "s/変更対象の文字列/変更後の文字列/g" 編集するファイル > 編集後のファイルの名前

sedコマンドを使うとファイル内文字列の編集(書き換え)ができます.

gオプションを使うとファイル内の対象となった全ての文字列が置換されます.ない場合は最初に出てきた文字列だけ置換されます.

コメント

タイトルとURLをコピーしました