What It Does#
CodeLake WinUtils is a Windows utility application that provides three essential file management features in a single tool:
- Find Files/Folders - Search for files or folders across selected folders with flexible wildcard or regex filters, file size constraints, and extension/folder pattern filtering
- Find Duplicate Files - Hash-based duplicate detection with intelligent grouping, allowing you to select and delete duplicates while preserving originals
- Windows Touch - Update file and folder timestamps (Created, Modified, Accessed, LastWritten) individually or in bulk
Getting Started#
- Launch the application.
-
Choose a folder source in the left panel using the radio button in each section header - the other section is disabled:
- Select folder(s) - pick folders from the drive tree by pressing the space bar or clicking the selection checkboxes.
- Enter folder(s) - type one folder path per line. The list is saved between sessions, and entries that do not exist are reported before the operation starts.
- Configure search options in the settings panel on the right.
- Click the relevant toolbar button (Find Files - which reads Find Folders while Only Find Folder(s) is checked - Find Duplicate Files, or Windows Touch) to execute the operation.
- Results open in a new window where you can view, sort, and act on the data.
If an option would stop the operation from working, a message lists what to correct and nothing runs. This happens when no folder is selected or entered, when a folder in the list does not exist, when Regular Expression Search has an invalid expression, or when a folder pattern is not written as MatchType:Pattern.
Features#
Find Files/Folders#
Search for files or folders across selected folders with powerful filtering options:
- Search Modes - Normal wildcard search (
*.txt) or Regular Expression search for complex patterns - File Size Constraints - Ignore files smaller than or larger than specified sizes (supports Byte, KB, MB, GB units)
- Extension Filtering - Include only specific extensions or exclude unwanted types, one per line with a leading dot (
.cs,.dll) - Folder Pattern Filtering - Include or exclude folders by name using
MatchType:Patternrules, one per line (Equals:src,StartsWith:Db,Contains:Debug). Applies to both folder sources - a folder from the tree or the typed list is skipped when its own name matches an exclude rule - Empty File Handling - Option to ignore zero-byte files
- Recursive Search - Option to search subfolders or limit to top-level folders
- Only Find Folders - Option to return matching folders instead of files (column header changes to "Folder Name")
Results display file/folder name, path, file size, created date, and modified date in a sortable DataGrid.
Folder patterns match a folder's own name, not its full path. A folder that matches an include rule contributes its entire subtree to a file search, and a folder that matches an exclude rule is skipped along with everything beneath it - including a folder you selected in the tree. With Only Find Folder(s) on, only the folders that match the include rule are listed, not their subfolders.
Find Duplicate Files#
Detect duplicate files using cryptographic hash comparison:
- Intelligent Hash Strategy - Fast matching mode hashes files under 5MB in full, and samples larger files in 1MB chunks (start, end, middle, quarters, then evenly spaced) instead of reading the whole file
- Full Hash Mode - Turn Intelligent Hash Matching off to force full-file SHA-256 hashing for absolute accuracy
- Size Guard - Every checksum is prefixed with the file size, so files of different sizes can never be grouped as duplicates
- Grouped Results - Duplicates are grouped by hash value with group headers showing the file count and the size each file in the group shares; click a group header to select all items in the group
- Selection Tools - Select all duplicate files across all groups (keeping one original per group), select by folder path, or select by drive path
- Bulk Delete - Delete selected duplicates to the Recycle Bin with confirmation, preserving at least one copy per group
- Async Operations - Large selection and delete operations run asynchronously with a progress bar and cancel button in the status bar
Results show file name, path, file size, created date, and modified date, grouped by checksum.
Windows Touch#
Update file and folder timestamps in bulk:
- Timestamp Types - Update Date Accessed, Date Modified, Date Created, or Date Last Written individually or in combination
- Date & Time - Pick the date and the time (hour, minute, second) to apply
- Folder Processing - Touch files only, or both files and folders
- Folders Only Attribute - Date Last Written applies to folders only, so it is available only when touching files and folders
Results display the item type ("File" or "Folder") and full path.
Options#
The settings panel on the right is organized into four tabs:
Global Search#
| Option | Default | Description |
|---|---|---|
| Ignore Empty File(s) | On | Skip files with zero bytes |
| Include Folder(s) & Subfolder(s) | On | Search subfolders recursively; off limits each folder to its top level |
| Ignore File(s) Smaller Than | Off | Skip files below the specified size (size + Byte/KB/MB/GB/TB unit) |
| Ignore File(s) Larger Than | Off | Skip files above the specified size (size + Byte/KB/MB/GB/TB unit) |
| Search Mode | Normal Search | Normal Search (wildcard) or Regular Expression Search |
| Search Filter | * |
File name pattern to match. Left blank it reverts to * (every file) in Normal Search. In Normal Search it must be a file name pattern only - a filter carrying a folder path, such as D:\Docs\*.txt or sub\*.txt, is refused |
| Include File(s) With Extension(s) | Off | Extensions to include, one per line (e.g., .cs) |
| Exclude File(s) With Extension(s) | Off | Extensions to exclude, one per line (e.g., .dll) |
| Include Folder(s) With Pattern(s) | Off | MatchType:Pattern rules for folders to include, one per line (e.g., Equals:src) |
| Exclude Folder(s) With Pattern(s) | Off | MatchType:Pattern rules for folders to exclude, one per line (e.g., Equals:bin) |
Match types: Equals, NotEquals, StartsWith, NotStartsWith, EndsWith, NotEndsWith, Contains, NotContains. Matching ignores case. A rule with no colon, an unknown match type, or an empty pattern is reported and blocks the operation rather than being ignored.
File/Folder Search#
| Option | Default | Description |
|---|---|---|
| Only Find Folder(s) | Off | Return matching folders instead of files |
Duplicate File Search#
| Option | Default | Description |
|---|---|---|
| Intelligent Hash Matching | On | Fast mode: sample large files instead of hashing them in full. The label shows the current trade-off (Fast, Good Accuracy / Slow, High Accuracy) |
Touch#
| Option | Default | Description |
|---|---|---|
| Only Touch File(s) | On | Apply timestamps to files only |
| Touch Both The File(s) & Folder(s) | Off | Apply timestamps to files and folders |
| Date Accessed | On | Update the Accessed timestamp |
| Date Modified | On | Update the Modified timestamp |
| Date Created | On | Update the Created timestamp |
| Date Last Written (Applies Only To Folders) | On | Update the LastWritten timestamp on folders. Unavailable while Only Touch File(s) is selected |
| Touch Date & Time | (last used) | The date and time (hour, minute, second) to apply |
A touch that could not write anything is refused rather than reported as a success:
- Clearing the date and starting a touch is refused - the date is asked for instead of falling back to the last one saved.
- Only Touch File(s) needs at least one of Date Accessed, Date Modified or Date Created. Date Last Written on its own writes nothing to a file, because Windows exposes it only on folders.
- Touching both files and folders with all four timestamps off is refused.
Only items that were actually written appear in the results. Touching both files and folders with only Date Last Written selected therefore lists the folders and not the files.
Toolbar Buttons#
| Button | Action |
|---|---|
| Find Files / Find Folders | Opens the result window with search results from selected folders. The label follows the Only Find Folder(s) option, as does the result window's title and its search-again button |
| Find Duplicate Files | Opens Find Duplicate Files result window with grouped duplicates |
| Windows Touch | Opens Windows Touch result window showing timestamp update results |
| Reset Folder(s) | Reloads the drive tree, clearing selections, or clears the typed folder list - whichever folder source is selected. The confirmation names the one it will reset |
| Reset Options | Restores all options to factory defaults |
| Exit | Closes the application (with confirmation) |
Result Window Toolbar#
Every result window shares these buttons:
| Button | Action |
|---|---|
| Options | Shows the options the operation actually used, in a fixed-width dialog. Values belonging to a switch that was off read -- Not Applicable -- |
| Close | Closes the result window |
Context Menus#
Copy commands act on the whole selection, not just the row you right-clicked: Copy Full Path copies one path per line for every selected item, and Copy Folder Path copies their folder paths with duplicates removed. Open in File Explorer works on a single item only and is disabled while more than one row is selected.
In the Find Duplicate Files results, copied text keeps the grouping you see on screen. Each group starts with the same header line as the grid (for example 2 duplicate(s) among 3 file(s)), followed by the selected paths in that group and a blank line:
2 duplicate(s) among 3 file(s)
C:\Backup\report.pdf
C:\Archive\report.pdf
1 duplicate(s) among 2 file(s)
D:\Photos\holiday.jpg
The header always reports the whole group, even when only some of its rows are selected, so the counts match the grid.
Copy Full Details copies what the grid shows - name, path, size, created, modified - as a Markdown table, so it can be pasted straight into a ticket, pull request, or notes file. Paths and names are wrapped in backticks, which keeps the backslashes intact when the Markdown is rendered. In the Find Duplicate Files results each group gets its own heading and hash line before its table:
### 2 duplicate(s) among 3 file(s)
- **File Size:** 1.20 MB
- **Hash:** `9F2A4C7B18DE3006E71B`
| File Name | Path | Created | Modified |
| --- | --- | --- | --- |
| `report.pdf` | `C:\Backup` | 9/20/2026 3:04:21 PM | 9/20/2026 3:10:02 PM |
| `report.pdf` | `C:\Archive` | 9/18/2026 8:31:10 AM | 9/20/2026 3:10:02 PM |
Every file in a group is the same size by definition, so the size is reported once in the group header rather than repeated down a column - which is also why the Find Duplicate Files grid has no File Size column and shows the size in its group header instead. The hash is a SHA-256 hash of the whole file, or one hash per sampled chunk when Intelligent Hash Matching is on, which makes that line considerably longer. Because it is a Markdown table, pasting into Excel needs Text to Columns on the | character; use Copy Full Path instead if a spreadsheet is the destination.
Find Files/Folders Result Grid#
Right-click on any file or folder in the results grid to access:
| Menu Item | Action |
|---|---|
| Copy Folder Path | Copies the folder path of every selected item, one per line, duplicates removed |
| Copy Full Path | Copies the full path of every selected item, one per line |
| Copy Full Details | Copies every selected row as a Markdown table: name, path, size, created, modified |
| Open in File Explorer | Opens Windows Explorer and selects the file or folder (single selection only) |
| Delete | Sends the selected file(s) or folder(s) to the Recycle Bin (with confirmation). Press Del key as a shortcut |
Find Duplicate Files Result Grid#
Right-click on any file in the results grid to access:
| Menu Item | Action |
|---|---|
| Copy Folder Path | Copies the folder path of every selected file, grouped under each group's header line, duplicates removed within a group |
| Copy Full Path | Copies the full path of every selected file, grouped under each group's header line |
| Copy Full Details | Copies every selected row as a Markdown table per group, headed by the group's counts, file size, and hash |
| Open in File Explorer | Opens Windows Explorer and selects the file (single selection only) |
| Select All Duplicate Files Within Each Group | Selects all duplicates across all groups, keeping one original per group |
| Select Files With This Folder Path | Selects all files sharing the same folder path as the right-clicked file (keeping one original per group if all match) |
| Select Files With This Drive Path | Selects all files on the same drive as the right-clicked file (keeping one original per group if all match) |
| Delete Selected File(s) | Deletes all selected files to the Recycle Bin (with confirmation). Press Del key as a shortcut |
Windows Touch Result Grid#
Right-click on any item in the results grid to access:
| Menu Item | Action |
|---|---|
| Copy Folder Path | Copies the folder path of every selected item, one per line, duplicates removed |
| Copy Full Path | Copies the full path of every selected item, one per line |
| Open in File Explorer | Opens Windows Explorer and selects the file or folder (single selection only) |
Async Delete and Selection#
When deleting or selecting a large number of files, the operation runs asynchronously to keep the UI responsive:
- A progress bar appears in the status bar showing completion percentage
- A Cancel button appears next to the progress bar to stop the operation
- The status text shows a running count (e.g., "Deleting file(s)... 50 of 200" or "Selecting... 500 of 1,000")
- After cancellation, the DataGrid reflects the current state - already-deleted files are removed, and already-selected files remain selected
- Ctrl+A in both result windows triggers async batch selection with progress instead of freezing the UI
- If some items could not be deleted, a dialog lists them (up to 20, with a count of any remainder) and explains the likely cause - in use, read-only, or insufficient permission. The status line also reports how many failed, and those rows stay in the grid
Tips#
- Settings Persist - All options are saved between sessions and restored on next launch.
- Batch Loading - Results for large file sets are loaded progressively to keep the UI responsive.
- Folder Patterns - Write one rule per line as
MatchType:Pattern, for exampleStartsWith:binorContains:Debug. Rules match a folder's own name, not its path. - Extension Lists - List one extension per line, always with the leading dot (
.cs, notcs). Commas are not separators. - Review What Ran - Each result window has an Options button showing the exact options the operation used. Options whose switch was off read
-- Not Applicable --. - Duplicate Detection - Intelligent Hash Matching is recommended for speed: files under 5MB are hashed in full, and larger files are sampled in 1MB chunks rather than read end to end. There is no second confirming pass, so two large files that match at every sampled chunk and share a size are reported as duplicates. Turn it off for full-file hashing before deleting anything you cannot replace.
- Group Header Selection - In the Find Duplicate Files window, click a group header to select all files in that group.
- Touch Date Safety - Windows Touch creates a results window before applying changes, allowing you to review the operation scope.
- Tree View Navigation - Use Space bar to quickly toggle folder selection.
- Explicit Folder List - Folders typed into the list are used exactly as entered and no wildcards are expanded, but the folder pattern options still apply - a typed folder whose own name matches an exclude rule is skipped. Entering both a folder and one of its sub-folders scans the outer folder once.
Copyright (c) 2006-2026 Nirav Patel/CodeLake. All rights reserved.