Wie bei Win10 Ordnernamen einheitliches Format beim Datum vergeben bzw. umwandeln?

wood4

Lieutenant
Registriert
Juli 2012
Beiträge
775
Hallo

Ich habe mehrere Ordner auf einer externen Festplatte in der sich Bild-Dateien bzw. Fotos befinden.

Diesen Ordnern wurden Namen vergeben meist mit Datum (geschrieben im Format: Beispiel: 01.01.1901) und dazu mit einem oder mehreren Wörtern.

Beispiele: "01.01.1901-Geburt des Sohnes", "01.02.1902 bis 02.02.1902 Urlaub in Frankreich",
"Kinderbeburtstag am 03.03.1903"

Jetzt möchte ich alle Datums in diesen Ordnernamen alle in das Format 1901-01-01 umwandeln (also Jahr-Monat-Tag)
UND das das jeweilige Datum immer ganz vorn als erstes im Ordnernamen steht.

Wie kann ich da vorgehen, um diesbzüglich nicht jeden Ordner einzeln bearrbeiten zu müssen? (Es sind ca. über 200 Ordner bzw. Ordnernamen)

OS ist Windows 10-Home auf Laptop.

Danke!
 
Falls es sich bei den vorhandenen Verzeichnissen immer um die gleiche Syntax handelt (dd.mm.yyyy), dann könntest du den "FreeCommander" nutzen und per "Mehrfach-Umbenennung" alle nach dem Schema umbennen, sodass du dann das Format: yyyy-mm-dd erhälst.

Edit: FreeCommander

Edit: @-byTe- Aufgabe nicht verstanden, setzen, 6. Ich habe übersehen, dass die Syntax eben nicht immer gleich ist... - Der FreeCommander hat aber durchaus nützliche Funktionen, mit denen sich das ggfs. dennoch realisieren lässt.
 
Bulk Rename Utility wäre dazu auch geeignet - ein sehr mächtiges Tool. Gute GUI, man sieht vor dem Ausführen wie der Rename dann aus sieht und kann somit etwas herumspielen bis es passt.
 
Bevor Du jetzt die Zeit mit Tools und Rückfragen "verdödelst" würde ich mich einfach hinsetzen und die Ordner von Hand umbenennen. Dauert vermutlich nicht länger als Rückfragen im Forum und ins Tool reinfinden.

200 Ordner * 10 Sekunden pro Ordner zum Umbenennen = 2000 Sekunden.
2000 Sekunden / 60 = 33,3 Minuten

In einer guten halben Stunde (bei 300 Ordnern eine gute 3/4 Stunde) bist also durch, und ohne Risiko, dass das Tool dann etwas nicht so macht wie es soll und dir Ordner verhaut, die Du dann ohnehin manuell nachpflegen musst...
 
Zuletzt bearbeitet:
Lässt sich leicht mit PowerShell und Regulären Ausdrücken lösen.

Einfach die Variable $rootFolder anpassen und Script mal testweise durchlaufen lassen.
Gibt alle neuen Ordnernamen aus.

Solange du im Script die Zeile 15 "Rename-Item -Path $folder.FullName -NewName $newFullName -Force" auskommentiert lässt, passiert nichts.
Einfach die Kommentare befolgen, wenn du es durchziehen willst.
PowerShell:
$rootFolder = 'C:\temp\' 

Clear-Host
$pattern = '(\d{2})\.(\d{2})\.(\d{4})' 
$folders = Get-ChildItem -Path $rootFolder -Directory # -Recurse | Sort-Object -Property FullName -Descending   # <- Auskommentieren, wenn auch Unterodner umebannt werden sollen
Foreach ($folder In $folders) { 
	If ($folder.Name -match $pattern) { 
		$newName = $folder.Name -replace $pattern , '$3-$2-$1' 
		$newFullName = Join-Path -Path $folder.Parent.FullName -ChildPath $newName 
		
		# Folgende Zeile entfernen, wenn Test OK 
		write-host $newFullName -ForegroundColor Yellow

		# Folgende Zeile auskommentieren, wenn Test OK 
		# Rename-Item -Path $folder.FullName -NewName $newFullName -Force 
	} 
}
 
Zuletzt bearbeitet:
Danke für Eure Antworten!

Es ist eine Art Nachlaß von ca. 80.000 (Achzigtausend) Bild-Dateien.
(Ich will da echt nichts kaputt machen!)

Meine als "ca. über 200" bezifferten Ordner-Namen sind da wohl von mir grob nach unten verschätzt.

Ich hätte da etwas "einfach" gedacht, z.B. Win-10 bringt da ein "einfaches" Bordmittel mit,
denn sonst ist ja Microsoft in manchen Sachen echt intelligent (er?).

In z.B. Excel gibt man dafür eine Formel ein, markiert das dann und "zieht es drüber"...

Grüße
 
Hatte noch gesehen, dass du ja das Datum an vorderster Stelle haben möchstest.

Hier mal ein erweitertes Script dafür.
Solange du im Script die Zeile 41 nicht auskommentierst, d.h. das Zeichen "#" entfernst, macht das Script nichts, außer die Ordnernamen visuell auszugeben, wie sie lauten würden.
Es wird dabei also erstmal nichts umbenannt.

Kannst die Ausgabe dann erstmal in Ruhe anschauen und prüfen, obs passt.

PowerShell:
$rootFolder = 'C:\temp\'  # Oberster Ordner

Clear-Host 
# Regex Pattern
$patternX = '(\d{2})\.(\d{2})\.(\d{4})'  # Standardformat; dient zum Umformatieren des Datums und für weitere Pattern
$pattern1 = "(?:von )?(?<full>$patternX bis $patternX)" # matched:  "XX.XX.XXX bis XX.XX.XXX"  und  "von XX.XX.XXX bis XX.XX.XXX"          
$pattern2 = "am (?<full>$patternX)" # matched: " am XX.XX.XXXX"          

$patternRemoveSpaces = '^ +|(?<= ) +(?=\S)| +$' # Entfernt nachträglich doppelte, führende oder nachgelagerte Leerzeichen 
$regexReplaceTarget = '$3-$2-$1' # internationales Datumsformat

# Hinteren Teil auskommentieren, wenn auch Unterodner umebannt werden sollen:
$folders = Get-ChildItem -Path $rootFolder -Directory # -Recurse | Sort-Object -Property FullName -Descending   
       
Foreach ($folder In $folders) { 
	$folderName = $folder.Name 
	
	If ($folder.Name -match $patternX) { 
		Switch -Regex($folderName) { 
			$pattern1 { 
				$match = [regex]::Match($folderName , $pattern1).Groups['full'].Value 
				$tempName = "$match $($folderName -replace $pattern1)" -replace $patternRemoveSpaces
			} 
			
			$pattern2 { 
				$match = [regex]::Match($folderName , $pattern2).Groups['full'].Value 
				$tempName = "$match $($folderName -replace $pattern2)" -replace $patternRemoveSpaces
			} 

			Default { $tempName = $folderName } 
		} 
		
		
		$newName = $tempName -replace $patternX , $regexReplaceTarget
		$newFullName = Join-Path -Path $folder.Parent.FullName -ChildPath $newName 
		
             
		write-host ('OLD: {0,-70} || NEW: {1}' -f $folderName,$newName) -ForegroundColor Yellow 
		
		# Folgende Zeile auskommentieren, wenn Test OK             
		# Rename-Item -Path $folder.FullName -NewName $newFullName -Force             
	} 
}

Update:
Hab die visuelle Ausgabe abgeändert.
 
Zuletzt bearbeitet:
Excel..? Hmmm… Ds käme ich in Versuchung mir das mit VBA hnzuklöppeln.

AntRenamer in mehreren Zügen würde wohl auch reichen, So was kann man immer brauchen.

CN8
 
Zurück
Oben