A lightweight Windows GUI wrapper for robocopy. No installation required — runs natively via PowerShell and WPF.
- Windows 10 or 11
- PowerShell 5.1+ (pre-installed on all modern Windows)
Double-click RobocopyGUI.bat or run from a terminal:
C:\tools\RobocopyTools\RobocopyGUI.bat
The GUI is split into sections from top to bottom:
| Control | Description |
|---|---|
| Source | The folder you want to copy from. |
| Destination | The folder you want to copy to. |
| Browse | Opens a folder picker dialog. |
| Swap button (arrows) | Swaps source and destination paths. |
You can also drag and drop folders from Explorer directly into either field.
Presets auto-configure the option checkboxes for common scenarios:
| Preset | What it does |
|---|---|
| Copy (default) | Copies all files and subdirectories to the destination. Existing destination files are kept. |
| Mirror | Makes the destination an exact copy of the source. Files in the destination that don't exist in the source are deleted. |
| Move | Copies files and subdirectories, then deletes them from the source. |
| Sync (no delete) | Copies newer/changed files without removing anything from the destination. |
| Custom | Leaves all checkboxes as-is for manual configuration. |
Threads controls how many parallel copy threads robocopy uses (default: 16). Higher values speed up transfers of many small files. Lower values are gentler on disk/network.
Toggle individual robocopy flags:
| Option | Flag | Description |
|---|---|---|
| Copy subdirectories | /E |
Includes all subdirectories, even empty ones. |
| Delete dest extras | /PURGE |
Removes files/folders in the destination that no longer exist in the source. |
| Move files | /MOV |
Deletes files from the source after copying. |
| Move files+dirs | /MOVE |
Deletes files and empty directories from the source after copying. |
| Restartable mode | /Z |
Enables resumable transfers — useful for large files over unreliable networks. |
| Network compression | /COMPRESS |
Compresses data during transfer (Windows 10 1903+ over SMB). |
| Show ETA | /ETA |
Displays estimated time of arrival for each file. |
| No progress | /NP |
Hides per-file percentage progress (cleaner log output). |
| Copy all attributes | /COPYALL |
Copies data, attributes, timestamps, security, owner, and auditing info. |
| Copy with security | /SEC |
Copies files with NTFS security (ACLs). |
| Copy dir timestamps | /DCOPY:DAT |
Preserves directory timestamps. |
| Create dir tree only | /CREATE |
Creates the folder structure without copying any file data (0-byte files). |
Additional fields:
| Field | Description |
|---|---|
| Retries | Number of retry attempts on failed copies (default: 3). |
| Wait | Seconds to wait between retries (default: 5). |
| Include | File patterns to include, e.g. *.jpg *.png. Only matching files are copied. |
| Exclude | Patterns to exclude. File patterns like *.tmp *.log are excluded with /XF. Bare names like node_modules are excluded as directories with /XD. |
| Extra args | Any additional robocopy arguments not covered by the GUI. |
Shows the exact robocopy command that will be executed. Updates live as you change any option. Useful for learning robocopy syntax or verifying your configuration before running.
Displays robocopy's real-time output as it runs. The status indicator in the top-right shows:
- Running... (yellow) — operation in progress
- DRY RUN... (yellow) — simulated run in progress
- Completed (exit code: N) (green) — finished successfully
- Error (exit code: N) (red) — finished with errors
- Stopped (red) — manually cancelled
| Button | Description |
|---|---|
| Run Robocopy | Starts the copy operation. |
| Dry Run (/L) | Simulates the operation without copying anything. Shows what would happen. Use this first to verify. |
| Stop | Kills a running robocopy process. |
| Clear Log | Clears the output panel. |
Robocopy uses a bitmask for exit codes. Codes 0-7 are not errors:
| Code | Meaning |
|---|---|
| 0 | No files were copied. Source and destination are already in sync. |
| 1 | Files were copied successfully. |
| 2 | Extra files or directories were detected in the destination. |
| 3 | Files were copied and extra files were detected. |
| 4 | Mismatched files or directories were found. |
| 5 | Files were copied and mismatches were found. |
| 7 | Files were copied, extras detected, and mismatches found. |
| 8+ | Errors occurred. Check the output log for details. |
- Set Source to the folder you want to back up.
- Set Destination to your backup location.
- Leave the preset on Copy.
- Click Run Robocopy.
- Set source and destination.
- Select the Mirror preset.
- Click Dry Run first to review what will be deleted from the destination.
- If the dry run looks correct, click Run Robocopy.
- Set source and destination.
- In the Include field, type the patterns:
*.jpg *.png *.mp4 - Click Run Robocopy.
- Set source and destination.
- In the Exclude field, type folder names:
node_modules .git __pycache__ - Click Run Robocopy.
- Set source and destination.
- Check Restartable mode (
/Z). - Set Retries to
10and Wait to30. - Click Run Robocopy.
- Always dry run first when using Mirror or Move presets. These delete files.
- The GUI auto-loads the source path if you previously marked a folder using the Robocopy context menu tool.
- You can resize the window to see more output.
- The Command Preview is a great way to learn robocopy flags — adjust options and watch the command update.