Wie kann ich Bilder/Videos in einem Ordner gleichzeitig verschieben und umbenennen?

Wie kann ich Bilder/Videos in einem Ordner gleichzeitig verschieben und umbenennen?

Alle Fotos und Videos meines Mobilgeräts werden in der Cloud gesichert und mithilfe der Funktion „Kamera-Upload“ von Dropbox mit meinem Laptop synchronisiert. Alle Fotos und Videos werden dem Ordner „Kamera-Uploads“ im Dropbox-Ordner hinzugefügt.

Ich möchte all dies in die Ordner „Fotos“ und „Videos“ innerhalb meines Benutzerordners verschieben. Ich verwende Windows 8, aber diese Frage könnte auch für Windows 7 gelten.

Idealerweise möchte ich, dass Fotos in den My PicturesOrdner verschoben werden. Das Foto sollte sich in einem Ordner mit dem Namen „Datum“ befinden und dieser Ordner sollte sich in einem Ordner mit dem Namen „Jahr“ befinden. Wenn ein Foto beispielsweise am 4. Oktober 2013 aufgenommen wurde, sollte es sich inMy Pictures/2013/2013-10-04/

Das Foto selbst sollte in das Datum und die Uhrzeit der Aufnahme umbenannt werden, optional gefolgt vom ursprünglichen Dateinamen. Wenn beispielsweise ein Foto am 4. Oktober 2013 um 14:05:07 Uhr aufgenommen wurde und den Namen IMG003.jpg trägt, wäre es inMy Pictures/2013/2013-10-04/2013-10-04 14.05.07 IMG003.jpg

Videos würden genauso funktionieren, aber in den My VideosOrdner verschoben werden. Ein Video, das am 1. Oktober 2013 um 17:03:01 aufgenommen wurde, würde beispielsweise verschoben werden nachMy Videos/2013/2013-10-01/2013-10-01 17.03.01 VIDEO003.mpg

Gibt es eine App, mit der ich diesen Vorgang automatisieren kann, oder geht das auch mit einer Batchdatei?

Antwort1

Vorausgesetzt, Sie verwenden Windows 7/8, wo Powershell vorinstalliert ist.

Dieses Powershell Skript kopiert Dateien aus einem Quellordner ( $source) in einen Zielordner ( $dest).
Mit Arrays filtern Sie nach Ihren gewünschten Dateien $filter, zB nur Bilder oder Videos.

  • Neuer Ordner wird geändert in<destination_folder\old_subfolders\YYYY\YYYY-MM-DD>
  • Der neue Dateiname wird geändert in<YYYY-MM-DD hh.mm.ss oldfilename.extension>

Jede Zeile ist kommentiert und ich habe absichtlich keine Aliase verwendet.

### 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
    }

Testen Sie das Skript zunächst mit copy-itemdem Befehl. Später können Sie es copy-itemdurch ersetzen move-item.

verwandte Informationen