Compare two directories recursively, except for \bin\ and \obj\

winmerge

I'm trying to use WinMerge to compare two directories:

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

The last 3 lines aren't part of the filter, I added those as I'm trying to ignore anything and everything in all \bin\ and \obj\ directories. I've tried both def: include and def: exclude, neither provides accurate results.

I've looked over the Help Documentation in WinMerge about the File Filters but I don't understand it.

Best Answer

Include and exclude refer to what is shown in the list of files and folders after the comparison is made. The filters are including and excluding things from that list.

If you use an exclude filter, it excludes, from the file listing, everything not listed in the filter.

If you use an include filter, it includes, in the file listing, everything not listed in the filter.

In your case, you are using an exclude, so you are only going to see the files and folders that you specifically list in your filter. To block bin and obj folders, you would need to know the names of all of the other folders you might want to see, so they can be listed in your filter.

I find, for code, it's easier to use an include filter. That way, I can block out folders and files that I don't care about.

Change the first def: to be include, and remove the second def. I think you can only have one def. Your d: rules would then be

d: \\bin$
d: \\obj$
Related Question