Robocopy GUI tool leverages the command-line utility Robocopy (Robust File Copy – introduced with Windows Server 2003 Resource Kit).
Robocopy best features include the option to copy file attributes along with the NTFS permissions, mirror the content of an entire folder hierarchy across local volumes or over a network excluding certain file types, copying files above or below a certain age or size, monitor the source location for changes, and giving detailed report with an option to output the status to a log file.
In addition, PowerShell GUI tool is making the process easy to configure and control providing ability to set up predefined options, one-click access to help and log file, and instant error analysis.

Features:
-supports spaces in the file name
-supports long paths
-shows Robocopy help
-recommended options
-ability to enter advanced options
-enable/disable file logging
-generates log file name (current date + source folder name)
-opens the current job logfile in notepad
-parses the current log file and shows ERROR messages
Screenshots:
Start Robocopy

Robocopy Help

Show Errors
Advanced Options

Enable Logging

Download:
PowerShell Robocopy GUI Update (PowerCopy 1.0.1)
The Code
To set up your preferable Robocopy options jump to check boxes section (line 173 – 457) and find the option you want to modify. Change theĀ $checkbox.Checked value from $False to $True
To uncheck the recommended options lines:
430 – 457
If you want to change the log file name modify lines:
97,118 and 126
Code snippet:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
#Robocopy Help function function robocopyhelp { $help = robocopy.exe /? $outputBox.text = $help |Out-String } #Open log function function openlog { $logfile = $InputLogFile.Text + "\" + ((Get-Date).ToString('yyyy-MM-dd')) + "_" + $InputSource.Text.Split('\')[-1].Replace(" ","_") + ".txt" if(!(Test-Path $logfile)){$outputBox.text = "There is no logfile for the current job."} else {$openlog = notepad.exe $logfile} } #Show Errors function function showerrors { $logfile = $InputLogFile.Text + "\" + ((Get-Date).ToString('yyyy-MM-dd')) + "_" + $InputSource.Text.Split('\')[-1].Replace(" ","_") + ".txt" if (!(Test-Path $logfile)) {$outputBox.text = "There is no logfile for the current job."} else {$logcontent = Get-Content $logfile if ($errors = $logcontent | Select-String -Pattern "ERROR " -Context 0,1 |Out-String) {$outputBox.text = $errors} else {$outputBox.text = "No errors found."} } } #checkbox group boxes #copy options group box $copyGroupBox = New-Object System.Windows.Forms.GroupBox $copyGroupBox.Location = New-Object System.Drawing.Size(210,15) $copyGroupBox.size = New-Object System.Drawing.Size(230,110) $copyGroupBox.text = "Copy Options" $Form.Controls.Add($copyGroupBox) #file selection options group box $FileSelectionGroupBox = New-Object System.Windows.Forms.GroupBox $FileSelectionGroupBox.Location = New-Object System.Drawing.Size(460,15) $FileSelectionGroupBox.size = New-Object System.Drawing.Size(200,110) $FileSelectionGroupBox.text = "File Selection Options" $Form.Controls.Add($FileSelectionGroupBox) #recommended options group box $RecommendedGroupBox = New-Object System.Windows.Forms.GroupBox $RecommendedGroupBox.Location = New-Object System.Drawing.Size(460,140) $RecommendedGroupBox.size = New-Object System.Drawing.Size(200,50) $RecommendedGroupBox.text = "Recommended Options" $Form.Controls.Add($RecommendedGroupBox) #logging options group box $LoggingGroupBox = New-Object System.Windows.Forms.GroupBox $LoggingGroupBox.Location = New-Object System.Drawing.Size(460,245) $LoggingGroupBox.size = New-Object System.Drawing.Size(200,70) $LoggingGroupBox.text = "Logging Options" $Form.Controls.Add($LoggingGroupBox) #end group boxes |