Supondo que você use o Windows 7/8 onde o Powershell está pré-instalado.
Este script Powershell copia arquivos de uma pasta de origem ( $source
) para uma pasta de destino ( $dest
).
Você filtra os arquivos desejados com $filter
array, por exemplo, apenas fotos ou vídeos.
- Nova pasta é alterada para
<destination_folder\old_subfolders\YYYY\YYYY-MM-DD>
- O novo nome do arquivo é alterado para
<YYYY-MM-DD hh.mm.ss oldfilename.extension>
Cada linha é comentada e eu não usei alias de propósito.
### set input folder
$source = "C:\My Dropbox\Camera Uploads"
### set output folder
$dest = "C:\Users\<USERNAME>\My Pictures"
### set which file types to include/copy
$filter = @("*.png", "*.jpg", "*.jpeg")
### retrieve all files from source folder and pipe them to copy
Get-ChildItem $source -include $filter -recurse | foreach {
### build new destination folder string (syntax: destination folder + old subfolders + year + year-month-day)
$destSub = $_.directoryname.Replace($source, $dest +'\'+ $_.CreationTime.Year +'\'+ $_.CreationTime.ToString("yyyy-MM-dd"))
$destSub
### check if new destination folder exists, otherwiese create new subfolder(s)
if (-not (Test-Path -literalpath $destSub)) { New-Item $destSub -Type Directory }
### build new file name string (syntax: new destination folder + year-month-date hours.minutes.seconds + oldname.extension)
$destName = $destSub +'\'+ $_.CreationTime.ToString("yyyy-MM-dd hh.mm.ss") + ' ' + $_.name
$destName
### copy source file to new file name
copy-item -literalpath $_.Fullname -destination $destName
}
Primeiro, teste o script com o comando copy-item
. Posteriormente, você pode substituir copy-item
por move-item
.