This PowerShell solution efficiently sorts large collections of pictures into a folder structure based on the "Date Taken" metadata. Available as both a command-line script and a user-friendly GUI application.
- Modern WPF Interface: Easy-to-use graphical interface
- Real-time Progress: Live progress bar and statistics
- Interactive Logging: Comprehensive log window with color-coded messages
- Folder Browser: Click to browse for source and destination folders
- Test Mode: Preview operations without moving files
- Configuration Panel: Adjust thread count and other settings
- Automation-friendly: Perfect for scripts and batch operations
- Parallel Processing: Uses PowerShell's
ForEach-Object -Parallelfor maximum efficiency - Flexible Parameters: Full control over all sorting options
- Parallel Processing: Uses all CPU cores for maximum efficiency
- Metadata Extraction: Reads Date Taken from EXIF data using multiple methods
- Smart Organization: Creates Year/Month folder structure (e.g.,
2023/03-March/) - Unsorted Handling: Pictures without Date Taken or with dates before 1995 go to "Unsorted" folder
- Duplicate Management: Automatically handles duplicate filenames by appending numbers
- Test Run Support: Preview what will happen without actually moving files
- Comprehensive Support: Handles various image formats (JPG, PNG, TIFF, HEIC, RAW, etc.)
- Real-time Monitoring: Progress tracking and detailed logging
- PowerShell 5.1 or later (PowerShell 7.0+ recommended for command-line version)
- Windows with .NET Framework
- WPF support (standard on Windows, required for GUI)
-
Launch the GUI:
.\Launch-PictureSorterGUI.ps1 -
Configure settings in the interface:
- Browse for source folder (containing your pictures)
- Browse for destination folder (where sorted pictures will go)
- Optionally enable "Test Run" to preview without moving files
- Adjust thread count if needed
-
Scan files to see how many pictures were found
-
Start sorting and monitor progress in real-time
.\Sort-PicturesByDate.ps1 -SourcePath "C:\MyPictures" -DestinationPath "C:\SortedPictures".\Sort-PicturesByDate.ps1 -SourcePath "C:\MyPictures" -DestinationPath "C:\SortedPictures" -TestRun.\Sort-PicturesByDate.ps1 -SourcePath "C:\MyPictures" -DestinationPath "C:\SortedPictures" -ThrottleLimit 8.\Example-Usage.ps1Launch-PictureSorterGUI.ps1- Main launcher for the GUI application βPictureSorterGUI.ps1- WPF-based graphical user interfaceSort-PicturesByDate.ps1- Core command-line sorting scriptExample-Usage.ps1- Interactive command-line exampleREADME.md- This documentation file
- SourcePath: Source directory containing pictures to sort (required)
- DestinationPath: Destination directory for organized pictures (required)
- ThrottleLimit: Number of parallel threads (default: CPU core count)
- SupportedExtensions: Array of file extensions to process
- TestRun: Perform a dry run without moving files
SortedPictures/
βββ 2023/
β βββ 01-January/
β βββ 02-February/
β βββ 03-March/
βββ 2024/
β βββ 06-June/
β βββ 12-December/
βββ Unsorted/
βββ photo_without_date.jpg
βββ old_photo_1994.jpg
- Optimized for hundreds of thousands of files
- Uses all CPU cores by default
- Minimal memory footprint with streaming processing
- Typical performance: 100-500 files per second (depending on hardware and file sizes)
- Test run mode for verification
- Duplicate filename handling
- Comprehensive error reporting
- No modification of source files (only moves)
JPG, JPEG, PNG, TIFF, TIF, BMP, GIF, HEIC, RAW, CR2, NEF, ARW
- Download/clone all files to a folder
- Right-click on
Launch-PictureSorterGUI.ps1β "Run with PowerShell" - Or open PowerShell in the folder and run:
.\Launch-PictureSorterGUI.ps1 - Use the GUI to select folders and start sorting!
Picture Sorter uses a dual licensing model:
- Individual users (personal use)
- Non-profit organizations (501(c)(3) or equivalent)
- Educational institutions (schools, universities, libraries)
- Open source projects
- Small businesses with annual revenue under $1,000,000 USD
- Large companies with annual revenue over $1,000,000 USD
- Government agencies and contractors
- Commercial service providers using this software
Why dual licensing?
- Keeps the software free for individuals and small organizations
- Provides sustainable funding for continued development and support
- Ensures priority support for commercial users
Need a commercial license?
π§ Contact: licensing@picturesorter.com
π Web: https://picturesorter.com/licensing
For detailed terms, see LICENSE.md and LICENSE-FREE.md
- Permission Errors: Run PowerShell as Administrator
- Execution Policy: Run
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser - GUI Won't Load: Ensure .NET Framework and WPF are installed (standard on Windows)
- COM Errors: Restart PowerShell session if you encounter COM object errors
- Large Collections: For very large collections (1M+ files), consider processing in batches