「ファイルを比較」の版間の差分
ナビゲーションに移動
検索に移動
ソースコードの追加、見出しと説明の追加 |
パラメーターの追加(メニュー表示のフラグ、デフォルトの比較方法) |
||
| 44行目: | 44行目: | ||
== MSY-07 版 == | == MSY-07 版 == | ||
Kuro氏が作成したマクロでは2つのファイルを比較することができますが、改造したことで下記のマクロでは2つのファイルの比較だけでなく、3つのファイルを比較することができるようになりました。 | Kuro氏が作成したマクロでは2つのファイルを比較することができますが、改造したことで下記のマクロでは2つのファイルの比較だけでなく、3つのファイルを比較することができるようになりました。 | ||
=== パラメーター === | |||
* showComparisonMenu:メニュー表示のフラグ(true:表示、false:非表示) | |||
* comparisonType:デフォルトの比較方法(1:2つのファイル、2:3つのファイル) | |||
=== ソースコード === | === ソースコード === | ||
| 51行目: | 55行目: | ||
var path = "C:\\Program Files\\WinMerge\\WinMergeU.exe"; | 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) { | if (editor.documents.Count < 2) { | ||
| 57行目: | 70行目: | ||
} | } | ||
status = "比較方法を選択します"; | if (showComparisonMenu) { | ||
var comparisonMenu = CreatePopupMenu(); | status = "比較方法を選択します"; | ||
comparisonMenu.Add("2つのファイルを比較する", 1); | var comparisonMenu = CreatePopupMenu(); | ||
comparisonMenu.Add("3つのファイルを比較する", 2); | comparisonMenu.Add("2つのファイルを比較する", 1); | ||
comparisonMenu.Add("3つのファイルを比較する", 2); | |||
comparisonType = comparisonMenu.Track(1); | |||
if (comparisonType == 0) { | if (comparisonType == 0) { | ||
Quit(); // キャンセル | |||
} | |||
} | } | ||
2025年1月10日 (金) 02:43時点における版
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);
}
}
}
スポンサーリンク