「ファイルを比較」の版間の差分
ナビゲーションに移動
検索に移動
リンク切れのURLを修正 |
変数にvarの宣言を追加(スクリプト言語にQuickJSを指定するとReferenceErrorが発生するため) |
||
| (2人の利用者による、間の9版が非表示) | |||
| 1行目: | 1行目: | ||
== Kuro 版 == | |||
[https://winmergejp.bitbucket.io/ WinMerge] にファイルのパスを渡すだけです。 | [https://winmergejp.bitbucket.io/ WinMerge] にファイルのパスを渡すだけです。 | ||
<syntaxhighlight lang="javascript"> | === ソースコード === | ||
<syntaxhighlight lang="javascript" copy> | |||
#title = "ファイルを比較" | |||
#tooltip = "WinMergeにファイルのパスを渡します。" | |||
var path = "C:\\Program Files\\WinMerge\\WinMergeU.exe"; | var path = "C:\\Program Files\\WinMerge\\WinMergeU.exe"; | ||
if (editor.documents.Count < 2) { | if (editor.documents.Count < 2) { | ||
status = "比較するファイルがありません"; | |||
Quit(); | |||
} | } | ||
status = document.Name + " と比較するファイルを選択します"; | status = document.Name + " と比較するファイルを選択します"; | ||
var m = CreatePopupMenu(); | var m = CreatePopupMenu(); | ||
var d = editor.documents; | var d = editor.documents; | ||
for (i = 0; i < d.Count; i++) { | for (var 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); | var r = m.Track(1); | ||
if (r > 0) { | 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); | |||
} | |||
</syntaxhighlight> | |||
== MSY-07 版 == | |||
Kuro氏が作成したマクロでは2つのファイルを比較することができますが、改造したことで下記のマクロでは2つのファイルの比較だけでなく、3つのファイルを比較することができるようになりました。 | |||
=== パラメーター === | |||
* showComparisonMenu:メニュー表示のフラグ(true:表示、false:非表示) | |||
* comparisonType:デフォルトの比較方法(1:2つのファイル、2:3つのファイル) | |||
=== ソースコード === | |||
<syntaxhighlight lang="javascript" copy> | |||
#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 (var 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 (var 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 (var 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); | |||
} | |||
} | |||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
2025年11月24日 (月) 13:13時点における最新版
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 (var 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 (var 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 (var 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 (var 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);
}
}
}
スポンサーリンク