【質問】外部ツールで差分を取る際の引数について
-
1番目のタブと2番目のタブのパスをいちどにWinMergeに渡して差分をとりたいんですけれど、外部ツールに渡す引数はどうすればいいですか?
$(Path)だと現在のファイルパスしか渡せないので困ってます。| しおりん | 返信 -
●しおりん さん
外部ツールでは無理なので,マクロで「アクティブなドキュメントと他のドキュメントのパスを WinMerge に渡す」処理を書いてみました.
・ドキュメントが複数の場合にはポップアップで選べるようにしています.
・保存済みファイルのみを対象としています.『無題』を一時ファイルにするような機能はありません.
以下のプログラムを適当な js ファイルに保存し,My Macros 配下に配置して Mery でマクロに登録して実行してみて下さい.#title = "WinMerge で比較"
var WinMerge = "C:\\Program Files (x86)\\WinMerge\\WinMergeU.exe"; // WinMerge パス// 無題を除外
if (!Document.FullName) {
Alert("保存済みドキュメントが対象です");
Quit();
}
// 有効なパス一覧を生成
var pathes = [];
for (var i=0; i<Editor.Documents.Count; i++) {
var doc = Editor.Documents.Item(i);
if (doc.FullName && doc != Editor.ActiveDocument) {
pathes.push(doc.FullName);
}
}
if (pathes) {
// 対象の選択
var target = "";
if (pathes.length == 1) {
target = pathes[0];
} else {
var popup = CreatePopupMenu();
for (var i=0; i<pathes.length; i++) {
popup.Add(pathes[i].split("\\").pop() + (i<9 ? "\t(&"+(i+1)+")" : ""), i+1);
}
pathes.unshift("");
target = pathes[popup.Track(mePosMouse)];
}
// WinMerge 実行
if (target) {
var shell = new ActiveXObject("WScript.Shell");
var exec = shell.Exec(WinMerge + ' "' + Editor.ActiveDocument.FullName + '" "' + target + '"');
}
}| ks | 返信 -
ks さま
こんなに早くご回答くださって、ありがとうございます。
素晴らしいです!希望どおりというか、希望以上の動作にすることが出来ました。| しおりん | 返信 -
ks さんご対応ありがとうございます。
WinMerge に渡すマクロですが、実は MeryWiki にもあったりします・・・。
http://www.haijin-boys.com/wiki/ファイルを比較
埋もれているし、名前も分かりづらくてスミマセン。
| Kuro | 返信 -
●Kuro さん
> WinMerge に渡すマクロですが、実は MeryWiki にもあったりします・・・。
> http://www.haijin-boys.com/wiki/ファイルを比較いつも遊ばせていただいてます,ks です.
ふむ,ずばりそのものなのが置いてありましたね(汗
気づけず車輪の再開発,失礼しました
# 気づけば Wiki のマクロが 69 個もあるのですね(2013/8/26現在)
# 一通り目は通していますが,もう大分忘れてる……| ks | 返信 -
● ks さん
いつも開発スピードの早さに度肝を抜かれております。
> # 気づけば Wiki のマクロが 69 個もあるのですね(2013/8/26現在)
> # 一通り目は通していますが,もう大分忘れてる……なんかすごいことになってますね。
最近、全然チェックしてませんでした(汗用途ごとに分類して見出しでも付けると少しは探しやすくなると思うのですが、
結構面倒くさそうですね・・・w| Kuro | 返信