選択されたテキストファイルにダイアログで指定した秀丸マクロを適用する 2017-02-18 (Sat) 22:26

選択したファイルに秀丸エディタのマクロを適用する とほぼ同内容。
変更点は、適用するマクロをダイアログで指定することと、マクロ適用対象ファイルへのガードの強化。
※別途 sfc-miniのインストールが必要。

// 選択されたテキストファイルに秀丸マクロを適用する(マクロはダイアログで選択する)
if(typeof SFCMINI_DEF === "undefined") WScript.Include('sfcmini.js');
if(typeof FUNCS_DEF === "undefined") WScript.Include('funcs.js');

var fs = funcs.fs;
var shell = funcs.shell;
var cSel = WScript.Col(WScript.Env('CurrentSelected'));

var hidemaruPath = 'C:/Util/Hidemaru/';
var macroPath = fs.BuildPath(hidemaruPath, 'Macro/X-Finder');
var hidemaru = fs.BuildPath(hidemaruPath, 'Hidemaru.exe');
var macro = '行末の空文字削除.mac';


// チェック
if(!fs.FolderExists(WScript.Env('Current')) || cSel.Count < 1) WScript.Quit();

// 退避先フォルダ作成
try{
var svfolder = fs.BuildPath(WScript.Env('Temp'), 'XF_Sav_' + fs.GetTempName());
fs.CreateFolder(svfolder);
}
catch(e){
WScript.Echo('退避先フォルダ作成失敗');
WScript.Quit();
}


// 秀丸マクロ選択
var mac = sfcmini.fileSelect(macroPath, '秀丸マクロ(*.mac)\t*.mac\t\t', macro, false);

if(mac && fs.FileExists(mac)){
for(var i = 0, para = ' /h /n /i /x"' + mac + '" '; i < cSel.Count; i++){
if(!fs.FileExists(cSel.Item(i))) continue;
if(/BINARY/i.test(funcs.exec('nkf -g ' + cSel.Item(i)).stdout)) continue;
shell.Run('cmd /c copy "' + cSel.Item(i) + '" "' + svfolder + '"', 0, true);
var exe = shell.Exec(hidemaru + para + cSel.Item(i));
while(!exe.Status) WScript.Exec('Sleep:100');
}
}

ソースコード赤色の部分は秀丸エディタのパス、秀丸マクロフォルダのパス、既定のマクロ名の指定部分。
環境に応じて要変更。

ソースコード青色の部分は、最悪手動で元に戻せるように対象ファイルを一時フォルダに退避する。

ソースコード緑色の部分は nkfを使用して、選択されたファイルがバイナリファイルなら処理しないようにしている。
上記の例ではnkfの実行ファイルをパスの通ったフォルダに入れているが、そうでない場合は環境に応じて要変更。
※ファイルによっては正確に判定出来ない事もありうるので要注意。


ファイルの退避とテキストファイルチェックはファイルIOを伴うため、重くなる場合もあるのでガードが不要なら削除可。
ただし、間違ってマクロを適用してしまうと元に戻せないので使用に際しては十分注意すること。

Includeファイルは、ここから。
関連記事

コメントの投稿

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

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

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

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

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

記事内容の誤りの指摘、疑問点の回答などコメント頂けると助かります。
カレンダー
07 | 2017/08 | 09
- - 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
カテゴリ
最新記事
最新コメント
最新トラックバック
リンク
ブロとも申請フォーム

この人とブロともになる

メールフォーム

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