技術とか戦略とか

IT技術者が技術や戦略について書くブログです。

サクラエディタのマクロをバッチファイルで複数ファイルに対して実行

表題の通りです。

実務で使う機会があったのでメモします。

 

置換するだけならgrep置換機能で良いのですが、古いバージョンだとこの機能が入っていませんし、ソート→マージ等の置換以外の機能を使いたくなることもあるので。

 

以下、例を用いて説明します。

 

【フォルダ構成】

C┬Program Files (x86)─sakura─sakura.exe

 └tmp┬work─(マクロの処理対象のファイル)

      ├CRLF→LF.mac

      └CRLF→LF.bat

 

【ファイルの中身】

・CRLF→LF.mac

S_ReplaceAll('\\r\\n', '\\n', 60); // すべて置換

S_ReDraw(0); // 再描画

FileSave( ); // 上書き保存

WinClose( ); // 閉じる

 

・CRLF→LF.bat

rem forループでworkフォルダの中のファイルを順番にサクラエディタで開く。その際CRLF→LF.macを呼び出す。

cd C:\tmp\work

for %%a in (*) do (call :method %%a)

exit

:method

"C:\Program Files (x86)\sakura\sakura.exe"  %1 -M=C:\tmp\CRLF→LF.mac

goto :eof

 

【処理結果】

C:\tmp\work の直下のファイルについて、改行コードの置換が一括で行われる。(WindowsのCRLF→UnixのLF)