to retain the creation date
Does the GoPro set the file properties?

If so, copy the files using the Windows Explorer as you normally would, then use Powershell to read the properties and set the timestamps based on that value.
Open Powershell_ISE and paste this script into it. Set the folder variable to point to the folder where your files are at. If you have multiple folders, we will need to modify the code.
This script sets both the Created date and the LastWritten date. If you don't want both set, then just remove that line.
If the GoPro uses a different property name, or date format, then we will need to modify the script to account for that.
$folder = 'c:\YourFolderName'
cls
$shell = New-Object -COMObject Shell.Application
$files = Get-ChildItem -Path $folder
$shellfolder = $shell.Namespace($folder)
foreach ($f in $files) {
""
$f.name
$PicDate = ""
$shellfile = $shellfolder.ParseName($f.name )
# To find the ID of the extended attribute you're interested in:
0..287 | ForEach-Object {
$prop = $shellfolder.GetDetailsOf($null, $_)
$date = $shellfolder.GetDetailsOf($shellfile, $_)
if ($shellfolder.GetDetailsOf($null, $_) -eq "Date taken") {
if ($date -ne "") {
$PicDate = $date
'{0} = {1} = {2}' -f $_, $prop, $date
}
}
if ($shellfolder.GetDetailsOf($null, $_) -eq "Media created") {
if ($date -ne "") {
$PicDate = $date
'{0} = {1} = {2}' -f $_, $prop, $date
}
}
}
if ($PicDate -ne "") {
$PicDate = ($PicDate.ToCharArray() | foreach {if ($_ -match '([\d:/apm ])') {$Matches[0]}}) -join "" # remove any hex values
"Current time is {0}" -f $f.LastWriteTime
"Set it to $PicDate"
# Select which time value you want to update
$f.LastWriteTime = [datetime]$PicDate
$f.CreationTime = [datetime]$PicDate
}
}
It should look like this.
