web-dev-qa-db-ja.com

\ bin \と\ obj \を除いて、2つのディレクトリを再帰的に比較します。

WinMergeを使用して2つのディレクトリを比較しようとしています。

C:\ Users ...\Desktop\Compare\35_A

C:\ Users ...\Desktop\Compare\35_HS

## This is a directory/file filter for WinMerge 
## This filter lets through only files ASP.NET developers care about 
name: ASP.NET Devel 
desc: Lets through only files ASP.NET developer cares about

## This is an exclusive filter 
## (it lets through only matching files) 
def: exclude 

## Filters for filenames begin with f: 
## Filters for directories begin with d: 
## (Inline comments begin with " ##" and extend to the end of the line) 

f: \.xml$ 
f: \.xlst$
f: \.xsl$
f: \.xslt$
f: \.dtd$ 
f: \.html$ 
f: \.htm$ 
f: \.css$ 
f: \.gif$ 
f: \.bmp$ 
f: \.jpg$ 
f: \.png$ 
f: \.js$ 
f: \.dll$ 
f: \.aspx$ 
f: \.asmx$ 
f: \.ascx$ 
f: \.vb$ 
f: \.resx$ 
f: \.cs$ 
f: \.js$ 
f: \.vbproj$ 
f: \.csproj$ 
f: \.sln$ 
f: \.webinfo$ 
f: \.config$ 

d: \\*$ ## Subdirectories 

def: exclude
d: \\bin
d: \\obj

最後の3行はフィルターの一部ではありません。すべての\ bin \および\ obj \ディレクトリ内のすべてのものを無視しようとしているため、これらを追加しました。私は両方を試しましたdef: includeおよびdef: exclude、どちらも正確な結果を提供しません。

WinMergeのファイルフィルターに関するヘルプドキュメントを調べましたが、理解できません。

2
sab669

Includeおよびexcludeは、ファイルのリストに表示されているものを参照し、比較が行われた後のフォルダ。フィルタは、そのリストから包含および除外のものです。

excludeフィルターを使用すると、ファイルリストから、フィルターにリストされているすべてのnotが除外されます。

includeフィルターを使用する場合、ファイルリストには、フィルターにリストされているすべてのnotが含まれます。

あなたの場合、除外を使用しているので、フィルターに具体的にリストしたファイルとフォルダーのみが表示されます。 binおよびobjフォルダーをブロックするには、表示したい他のフォルダーのallの名前を知っている必要があります。フィルタ。

コードの場合、インクルードフィルターを使用する方が簡単だと思います。そうすれば、気にしないフォルダやファイルをブロックすることができます。

最初のdef:includeに変更し、2番目のdefを削除します。 defは1つしか持てないと思います。 d:ルールは次のようになります

d: \\bin$
d: \\obj$
4
Patrick Seymour

他の人が述べたように、あなたは1つのdef:行しか持つことができず、フィルターは実際にはdef:ディレクティブの反対のアクションを実行します(つまり、defexcludeフィルターの場合)実際にファイルを含めます)。

したがって、その知識を使用すると、次の行にすべてのサブディレクトリが含まれていることがわかります。

d: \\*$ ## Subdirectories

WinMergeをインストールしておらず、その中のRegExエンジンに精通していませんが、負のルックアップを使用して、「bin」と「obj」を除くすべてのサブディレクトリを含めることができます。

d: ^\\((?!bin|obj)(.+)|(.+)(?<!bin|obj))$
1
heavyd

@heavydの回答では限られた成功しかありませんでしたが、後でWinMergeの明らかな後継者であるWinMerge2011の方がはるかに簡単であることがわかりました。

WinMerge2011で私は使用しました

xd: \\bin(\\.+|)$
xd: \\obj\\

ドキュメントを見つけるのは難しいかもしれませんが、私は見つけました http://forums.winmerge.org/viewtopic.php?f=4&t=101

WinMerge 2011では、ファイル/ディレクトリフィルタが拡張され、包含ルールと除外ルールの両方を組み合わせることができるようになりました。 .fltファイルのdef:ラベルを省略すると、f:とd:は、接頭辞xが付いていない限り、包含ルールとして機能します。接頭辞xが付いている場合は、除外ルールとして機能します。除外ルールを形成するためにオプションで接頭辞xが付いたf:およびd:ラベルは、ワイルドカードフィルターでも使用できます。

参考までに、WinMergeは開発されていないようです。 https://en.wikipedia.org/wiki/WinMerge の概要ノートを参照してください。 WinMerge2011を https://bitbucket.org/jtuc/winmerge2011/downloads/ でダウンロードします。

0
RockResolve