Como posso mover e renomear em massa imagens / vídeos em uma pasta

3

Todas as fotos e vídeos de meu celular são copiados para a nuvem e sincronizados com o meu laptop usando o recurso "Camera Upload" do Dropbox. Todas as fotos e vídeos são adicionados à pasta "uploads de câmeras" na pasta do Dropbox.

Estou desejando mover todas essas pastas para minhas fotos e vídeos na minha pasta de usuário. Estou usando o Windows 8, mas essa pergunta também pode ser para o Windows 7.

Idealmente, quero que as fotos sejam movidas para a pasta My Pictures . A foto deve estar em uma pasta chamada data e essa pasta deve estar em uma pasta nomeada como o ano. Por exemplo, se uma foto foi tirada em 4 de outubro de 2013, ela deve estar em My Pictures/2013/2013-10-04/

A foto em si deve ser renomeada para a data e hora em que a foto foi tirada e, opcionalmente, seguida pelo nome do arquivo original. Por exemplo, se uma foto foi tirada às 14:05:07 de 4 de outubro de 2013 e se chamar IMG003.jpg, ela estará em My Pictures/2013/2013-10-04/2013-10-04 14.05.07 IMG003.jpg

Os vídeos funcionariam da mesma forma, mas seriam colocados na pasta My Videos . Por exemplo, um vídeo feito às 17:03:01 de 1º de outubro de 2013 seria movido para My 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 pode ser feito usando um arquivo em lotes?

    
por iagdotme 04.10.2013 / 10:31

1 resposta

2

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 .

    
por 04.10.2013 / 14:24