
Todas as fotos e vídeos do meu dispositivo móvel são copiados para a nuvem e sincronizados com o meu laptop usando o recurso "Upload de câmera" do Dropbox. Todas as fotos e vídeos são adicionados à pasta “uploads da câmera” na pasta Dropbox.
Quero mover tudo isso para minhas pastas Fotos e Vídeos dentro da minha pasta de usuário. Estou usando o Windows 8, mas esta pergunta também pode ser para o Windows 7.
O ideal é que as fotos sejam movidas para a My Pictures
pasta. A foto deve estar em uma pasta chamada data e essa pasta deve estar em uma pasta chamada ano. Por exemplo, se uma foto foi tirada em 4 de outubro de 2013, ela deveria estar emMy Pictures/2013/2013-10-04/
A foto em si deve ser renomeada com a data e hora em que a foto foi tirada e, opcionalmente, seguida do nome do arquivo original. Por exemplo, se uma foto foi tirada às 14:05:07 do dia 4 de outubro de 2013 e se chamava IMG003.jpg, ela estaria emMy Pictures/2013/2013-10-04/2013-10-04 14.05.07 IMG003.jpg
Os vídeos funcionariam da mesma forma, mas seriam colocados na My Videos
pasta. Por exemplo, um vídeo gravado às 17h03min01s do dia 1º de outubro de 2013 seria movido paraMy Videos/2013/2013-10-01/2013-10-01 17.03.01 VIDEO003.mpg
Existe um aplicativo que eu possa usar para automatizar esse processo ou isso poderia ser feito usando um arquivo em lote?
Responder1
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
matriz, por exemplo, apenas fotos ou vídeos.
- A 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 não usei aliases 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 copy-item
o comando. Mais tarde você pode substituir copy-item
por move-item
.