
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 Pictures
Ordner 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 Videos
Ordner 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-item
dem Befehl. Später können Sie es copy-item
durch ersetzen move-item
.