「ファイルを比較」の版間の差分

提供: MeryWiki
ナビゲーションに移動 検索に移動
編集の要約なし
MSY-07 (トーク | 投稿記録)
変数にvarの宣言を追加(スクリプト言語にQuickJSを指定するとReferenceErrorが発生するため)
 
(2人の利用者による、間の10版が非表示)
1行目: 1行目:
[http://www.geocities.co.jp/SiliconValley-SanJose/8165/winmerge.html WinMerge] にファイルのパスを渡すだけです。
== Kuro 版 ==
[https://winmergejp.bitbucket.io/ WinMerge] にファイルのパスを渡すだけです。


<syntaxhighlight lang="javascript">
=== ソースコード ===
// -----------------------------------------------------------------------------
<syntaxhighlight lang="javascript" copy>
// ファイルを比較
#title = "ファイルを比較"
//
#tooltip = "WinMergeにファイルのパスを渡します。"
// Copyright (c) Kuro. All Rights Reserved.
// www:    http://www.haijin-boys.com/
// -----------------------------------------------------------------------------


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 = "比較するファイルがありません";
status = "比較するファイルがありません";
    Quit();
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);
var item = d.item(i);
    if (item.FullName == document.FullName)
if (item.FullName == document.FullName) {
        continue;
continue;
    var s;
}
    s = "\"" + document.Name + "\" と \"" + item.Name + "\" を比較する";
var s = "\"" + document.Name + "\" と \"" + item.Name + "\" を比較する";
    if (!item.Saved)
if (!item.Saved) {
        s = s + " *";
s = s + " *";
    m.Add(s, i + 1);
}
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);
var item = d.Item(r - 1);
    if (!item.Saved)
if (!item.Saved) {
        item.Save(item.FullName);
item.Save(item.FullName);
    if (!document.Saved)
}
        document.Save(document.FullName);
if (!document.Saved) {
    var s = "\"" + path + "\" \"" + document.FullName + "\" \"" + item.FullName + "\"";
document.Save(document.FullName);
    status = s;
}
    var ws = new ActiveXObject("WScript.Shell");
var s = "\"" + path + "\" \"" + document.FullName + "\" \"" + item.FullName + "\"";
    ws.Run(s);
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);
		}
	}
}
スポンサーリンク