選択したファイルに秀丸エディタのマクロを適用する 2011-03-24 (Thu) 23:59

以前X-finderのカレントフォルダからGrepを実行するのに使った秀丸エディタ。

この秀丸エディタにはマクロ機能が搭載されていて、テキストファイルを定型的に加工・修正するのに重宝する。
しかしマクロを適用したいファイルがたくさんある場合、一々ファイルを開いてマクロを実行するのは少々面倒だ。
そこで今回はX-finderで選択したファイルに、秀丸エディタの任意のマクロをバッチ処理的に適用するスクリプトを書いてみた。

ここで言うバッチ処理的にとは、マクロがそれだけで完結していて、起動するだけで目的の加工・修正を行いその結果を保存して終了する機能を有していることを指す。

まぁ簡単に言うと、

1.マクロの中でマクロの動作の中断を伴う入出力を行わない。(input文やmessage文を使わない)
2.マクロを終了する際にはsaveexit文で修正した内容を保存してから終了する。

上記の条件を満たす任意のマクロをX-Finderで指定したファイルにまとめて適用することを目的とするスクリプトということだ。


使用例

もうちょっと気の利いたマクロでも例にすればよかったが、適当なものがなかったのであまり面白くもないがファイルの内容を昇順にソートするマクロをサンプルとして…

以下のソースを秀丸マクロ実行.jsとしてX-FinderのScriptフォルダに保存する
var oShell = new ActiveXObject('WScript.Shell');
var oFs = new ActiveXObject('Scripting.FileSystemObject');
var cSel = WScript.Col(WScript.Env('Selected'));
var sPgpath = WScript.Env('Arg1');
var sMacro = WScript.Env('Arg2');
var sFilter = WScript.Env('Arg3').replace(/[ \t\"\'\*\.]/g,'');
var sPara = ' /h /x ' + sMacro + ' ';

for (var i = 0, sExt, flg = true; i < cSel.Count; i++){
if(sFilter != ''){
sExt = oFs.GetExtensionName(cSel.Item(i));
flg = (sFilter.match(RegExp('(^|;)' + sExt + '(;|$)','gi')))?true:false;
}
if(flg && oFs.FileExists(cSel.Item(i))){
oShell.Run(sPgpath + sPara + '"' + cSel.Item(i) + '"', 7, true);
}
}

ランチャの設定
パス
Set:Arg1="D:\\Tools\\HdEdit\\Hidemaru.exe"
Set:Arg2="ソート.mac"
Set:Arg3="*.dat;*.txt"
Include:JScript 秀丸マクロ実行.js

拡張
*.dat;*.txt(フィルタを使用しない場合は入力不要)

動作
パスにフォーカス項目を渡して実行(フィルタを使用しない場合はパスを実行でOK)

パラメタ(環境変数)の意味
Arg1 : 秀丸エディタの実行ファイルのパス ex) "C:\\Program Files\\Hidemaru\\Hidemaru.exe"
Arg2 : 使用する秀丸マクロ ex) "ソート.mac"
[その他]-[動作環境]-[環境]-[マクロファイル用のフォルダ]に指定されたフォルダに
あるマクロならフルパス指定は不要
Arg3 : マクロを適用するファイルの拡張子 ex) "*.txt;*.dat"
選択されたファイルの内、ここで指定した拡張子を持つファイルにのみマクロを適用する。
否定とか正規表現とかは使用できない。何も指定しなければ全てが対象となる。

マクロ(ソート.mac)の内容
selectall;
setcompatiblemode 0x0F;
filter "Converter\\Sort.hmf" , "Sort" , "0010";
escape;
saveexit;


注意など
Arg3については複数のファイルを選択した際に誤ってバイナリファイルが含まれたりした場合にそのファイルに処理がされないようにと思って用心のため付けたがほんの気休め程度でしかない。
同じ拡張子のファイルでも処理対象でないファイルを誤って指定したらそのファイルについてもマクロを適用してしまい、元に戻すこともできない。
そのためこのスクリプトを使用する際には充分に注意を要するし、慣れるまでは一々バックアップをとってからこのスクリプトを実行することを推奨する。

関連記事

コメントの投稿

管理者にだけ表示を許可する

注意事項
基本的にこのブログはブログ主の備忘録です。

ブログの内容にはブログ主の主観や時には正確でない情報が含まれていることもあります。書いてある内容がすべての環境にあてはまることを保証するものでもありません。

また、過去の記事は現時点で既に陳腐化していることもあります。

その辺をご理解の上で当ブログ内に書いてあることを試す場合は自己責任でお願いします。

記事内容の誤りの指摘、疑問点の回答などコメント頂けると助かります。
カレンダー
09 | 2017/10 | 11
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -
ブログ内検索
カラーコードチェッカ
カラーコードの確認
入力例) #ffffff | blue
カテゴリ
最新記事
最新コメント
最新トラックバック
リンク
ブロとも申請フォーム

この人とブロともになる

メールフォーム

名前:
メール:
件名:
本文: