Datein nach Erstellungsdatum in Unterornder verschieben
Hallo,
ich möchte alle Dateien nach Erstellungsdatum in datumbenannte Unterordner kopieren und eventuell diesen auch erstellen, wenn er nicht vorhanden ist.
Beispiel:
aaaaaa.jpg Erstellt am 01.04.2016 soll in den Unterordner 2016.04 verschoben werden
bbbbbb.jpg Erstellt am 01.05.2016 soll in den Unterordner 2016.05 verschoben werden
am besten in Powershell.
schon mal danke im Voraus
ich möchte alle Dateien nach Erstellungsdatum in datumbenannte Unterordner kopieren und eventuell diesen auch erstellen, wenn er nicht vorhanden ist.
Beispiel:
aaaaaa.jpg Erstellt am 01.04.2016 soll in den Unterordner 2016.04 verschoben werden
bbbbbb.jpg Erstellt am 01.05.2016 soll in den Unterordner 2016.05 verschoben werden
am besten in Powershell.
schon mal danke im Voraus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 303915
Url: https://administrator.de/contentid/303915
Ausgedruckt am: 26.11.2024 um 04:11 Uhr
20 Kommentare
Neuester Kommentar
$ordner = 'c:\deinordner'
dir $ordner -File | group {$_.CreationTime.toString("yyyy.MM")} | %{
$ziel = "$ordner\$($_.Name)"
if (!(test-path $ziel)){md $ziel -Force}
move-item $_.Group $ziel -Force
}
Geht hier fehlerfrei. Wahrscheinlich mal wieder alte Powershell benutzt.
Aktuellen Pfad bekommst du so
macht hier genau das was du willst, fehlerfrei. Fehler muss also bei dir liegen.
Aktuellen Pfad bekommst du so
Split-Path -Parent -Path $MyInvocation.MyCommand.Definition
$ordner = Split-Path -Parent -Path $MyInvocation.MyCommand.Definition
dir $ordner -File | group {$_.CreationTime.toString("yyyy.MM")} | %{
$ziel = "$ordner\$($_.Name)"
if (!(test-path $ziel)){md $ziel -Force}
move-item $_.Group -Destination $ziel -Force
}
Dafür musst du die erweiterten Dateieigenschaften abfragen, oder mit einem EXIF-Tool das Datum auslesen
Das hier könntest du einfach mit in die Pipe einbauen:
Erweiterte Dateieigenschaften mit Powershell-Funktion abfragen
Das hier könntest du einfach mit in die Pipe einbauen:
Erweiterte Dateieigenschaften mit Powershell-Funktion abfragen
Mit get-Date das String-Datum in ein richtiges Datum umwandeln und mit Parameter -F formatiert ausgeben.
Zitat von @xyxy-yx:
Irgendwie wird nur das heutige Datum genommen nicht das Aufnahmedatum, funktioniert doch noch nicht so ganz
Ist ja auch logisch denn du hast vergessen die Eigenschaft Aufnahmedatum bei get-Date anzugeben, ohne diese Angabe nimmt er das heutige Datum !Irgendwie wird nur das heutige Datum genommen nicht das Aufnahmedatum, funktioniert doch noch nicht so ganz
group {Get-Date $_.Aufnahmedatum -format yyyy.MM}
s.o.
und ab und zu mal ins Manual sehen, da steht es ebenfalls.
und ab und zu mal ins Manual sehen, da steht es ebenfalls.
Dann ergänze den String vorher noch um die Sekunden :00 bevor du ihn an get-Date verfütterst oder nutze stattdessen DateTime::TryParse
Natürlich solltest du vorher auch prüfen ob im Aufnahmedatum überhaupt etwas steht und ob es als Datum interpretiert werden kann: Stichwort where-object
Natürlich solltest du vorher auch prüfen ob im Aufnahmedatum überhaupt etwas steht und ob es als Datum interpretiert werden kann: Stichwort where-object
Oh man, echt Kindergarten hier:
Erst mit TryParse alle Bilder ausfiltern die ein gültiges Aufnahmedatum haben und dann mit [DateTime]::Parse zum Datum umwandeln
Steht alles da, man muss es nur lesen
https://msdn.microsoft.com/de-de/library/system.datetime.tryparse(v=vs.1 ...
https://msdn.microsoft.com/de-de/library/system.datetime.parse(v=vs.110) ...
Erst mit TryParse alle Bilder ausfiltern die ein gültiges Aufnahmedatum haben und dann mit [DateTime]::Parse zum Datum umwandeln
Steht alles da, man muss es nur lesen
https://msdn.microsoft.com/de-de/library/system.datetime.tryparse(v=vs.1 ...
https://msdn.microsoft.com/de-de/library/system.datetime.parse(v=vs.110) ...