Recently at work, I was talking with a coworker about cool little utilities that we wished we had. He mentioned
an idea for a shell extension that would remove all intermediate compiler files (such as *.obj
) from
a directory (and recurse subdirectories, naturally). That sounded pretty neat, and since he was in the middle of
writing up a different cool program, I decided to get cracking on the clean-up utility and see what I could do.
I came up with this little app, DirClean. It's a shell extension that appears on the context menu of directories,
and has a "Clean up temp files" command that will remove intermediate compiler files from the selected
directory and its subdirectories. By default, the files are put in the Recycle Bin, but you can configure DirClean
to just delete the files instead. DirClean uses the SHFileOperation
function to delete files, so if
there are a lot of files to delete, you'll see the familiar flying-paper progress dialog.
DirClean has both ANSI and Unicode versions. It was written with VC 6 SP 3, and tested on Win 98 and Win 2000.
The "DirClean options" menu item brings up the DirClean options dialog:
The settings here should be self-explanatory. I don't do any checking of the wildcards you enter, so you probably
don't want to enter "*.*"
;) The settings are saved in HKEY_CURRENT_USER
,
so each user has his own settings.
Note that you can override the "Send files to the Recycle Bin" setting by holding down the Shift key
when clicking "Clean up temp files." Holding in Shift will immediately delete files if you have the option
set to send files to the Recycle Bin, and vice versa.
Important note for VS.NET users
On the NT-based OSes, the way that the shell handles extensions of more than 3 characters will cause problems
for C# projects. The default behavior of the shell makes the wildcard *.res
match .RESX
files (it only compares the first three characters), and deleting the .RESX
files will delete some
resource information.
So, to avoid deleting those files, you can either remove *.res
from the list of files to delete,
or go to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
, and set the DWORD value Win95TruncatedExtensions
to 0, then restart your computer. See KB article Q164351
for more info on this feature.
History
Oct 28, 2001 - Default list of wildcards updated.
Dec 25, 2002 - Added note about the Win95TruncatedExtensions
registry entry.