ファイルを比較
ナビゲーションに移動
検索に移動
Kuro 版[編集]
WinMerge にファイルのパスを渡すだけです。
ソースコード[編集]
#title = "ファイルを比較"
#tooltip = "WinMergeにファイルのパスを渡します。"
var path = "C:\\Program Files\\WinMerge\\WinMergeU.exe";
if (editor.documents.Count < 2) {
status = "比較するファイルがありません";
Quit();
}
status = document.Name + " と比較するファイルを選択します";
var m = CreatePopupMenu();
var d = editor.documents;
for (i = 0; i < d.Count; i++) {
var item = d.item(i);
if (item.FullName == document.FullName) {
continue;
}
var s = "\"" + document.Name + "\" と \"" + item.Name + "\" を比較する";
if (!item.Saved) {
s = s + " *";
}
m.Add(s, i + 1);
}
var r = m.Track(1);
if (r > 0) {
var item = d.Item(r - 1);
if (!item.Saved) {
item.Save(item.FullName);
}
if (!document.Saved) {
document.Save(document.FullName);
}
var s = "\"" + path + "\" \"" + document.FullName + "\" \"" + item.FullName + "\"";
status = s;
var ws = new ActiveXObject("WScript.Shell");
ws.Run(s);
}
MSY-07 版[編集]
Kuro氏が作成したマクロでは2つのファイルを比較することができますが、改造したことで下記のマクロでは2つのファイルの比較だけでなく、3つのファイルを比較することができるようになりました。
パラメーター[編集]
- showComparisonMenu:メニュー表示のフラグ(true:表示、false:非表示)
- comparisonType:デフォルトの比較方法(1:2つのファイル、2:3つのファイル)
ソースコード[編集]
#title = "ファイルを比較"
#tooltip = "WinMergeにファイルのパスを渡します。"
var path = "C:\\Program Files\\WinMerge\\WinMergeU.exe";
var showComparisonMenu = true; // メニュー表示のフラグ(true: 表示, false: 非表示)
var comparisonType = 1; // デフォルトの比較方法(1: 2つのファイル, 2: 3つのファイル)
if (!showComparisonMenu) {
if (comparisonType == 2 && editor.documents.Count < 3) {
status = "3つのファイルを比較するには、少なくとも3つのファイルを開いてください";
Quit();
}
}
if (editor.documents.Count < 2) {
status = "比較するファイルがありません";
Quit();
}
if (showComparisonMenu) {
status = "比較方法を選択します";
var comparisonMenu = CreatePopupMenu();
comparisonMenu.Add("2つのファイルを比較する", 1);
comparisonMenu.Add("3つのファイルを比較する", 2);
comparisonType = comparisonMenu.Track(1);
if (comparisonType == 0) {
Quit(); // キャンセル
}
}
if (comparisonType == 1) {
// 2つのファイルを比較する
status = document.Name + " と比較するファイルを選択します";
var m = CreatePopupMenu();
var d = editor.documents;
for (i = 0; i < d.Count; i++) {
var item = d.item(i);
if (item.FullName == document.FullName) {
continue;
}
var s = "\"" + document.Name + "\" と \"" + item.Name + "\" を比較する";
if (!item.Saved) {
s = s + " *";
}
m.Add(s, i + 1);
}
var r = m.Track(1);
if (r > 0) {
var item = d.Item(r - 1);
if (!item.Saved) {
item.Save(item.FullName);
}
if (!document.Saved) {
document.Save(document.FullName);
}
var s = "\"" + path + "\" \"" + document.FullName + "\" \"" + item.FullName + "\"";
status = s;
var ws = new ActiveXObject("WScript.Shell");
ws.Run(s);
}
} else if (comparisonType == 2) {
// 3つのファイルを比較する
if (editor.documents.Count < 3) {
status = "3つのファイルを比較するには、少なくとも3つのファイルを開いてください";
Quit();
}
status = document.Name + " と比較する2つのファイルを選択します";
var m = CreatePopupMenu();
var d = editor.documents;
for (i = 0; i < d.Count; i++) {
var item = d.item(i);
if (item.FullName == document.FullName) {
continue;
}
var s = "\"" + document.Name + "\" と \"" + item.Name + "\" を比較対象に追加";
if (!item.Saved) {
s = s + " *";
}
m.Add(s, i + 1);
}
var r1 = m.Track(1);
if (r1 > 0) {
var firstItem = d.Item(r1 - 1);
if (!firstItem.Saved) {
firstItem.Save(firstItem.FullName);
}
var m2 = CreatePopupMenu();
for (i = 0; i < d.Count; i++) {
var item = d.item(i);
if (item.FullName == document.FullName || item.FullName == firstItem.FullName) {
continue;
}
var s = "\"" + document.Name + "\" と \"" + firstItem.Name + "\" と \"" + item.Name + "\" を比較";
if (!item.Saved) {
s = s + " *";
}
m2.Add(s, i + 1);
}
var r2 = m2.Track(1);
if (r2 > 0) {
var secondItem = d.Item(r2 - 1);
if (!secondItem.Saved) {
secondItem.Save(secondItem.FullName);
}
if (!document.Saved) {
document.Save(document.FullName);
}
var s = "\"" + path + "\" \"" + document.FullName + "\" \"" + firstItem.FullName + "\" \"" + secondItem.FullName + "\"";
status = s;
var ws = new ActiveXObject("WScript.Shell");
ws.Run(s);
}
}
}
スポンサーリンク