Ponderosa
Commodore
- Registriert
- Juli 2023
- Beiträge
- 4.353
Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
Eben. Damit kenne ich mich eben auch nicht aus.Ponderosa schrieb:Mit Scripten kenne ich mich auch nicht aus
Get-ChildItem -Path "D:\" -File | ForEach-Object {
# Extrahiere den Dateinamen und die Erweiterung
$dateiName = $_.BaseName
$erweiterung = $_.Extension
# Überprüfe, ob der Dateiname das Muster "dd.mm.yyyy" enthält
if ($dateiName -match '\b(\d{2})\.(\d{2})\.(\d{4})\b') {
# Extrahiere Tag, Monat und Jahr aus dem Dateinamen
$tag = $matches[1]
$monat = $matches[2]
$jahr = $matches[3]
# Ersetze den Datumsbereich mit dem neuen Format "yyyy-mm-dd"
$neuerDateiName = $dateiName -replace '\b(\d{2})\.(\d{2})\.(\d{4})\b', "$jahr-$monat-$tag"
# Ersetze alle nicht-alphanumerischen Zeichen vor dem Datum mit einem Bindestrich
$neuerDateiName = $neuerDateiName -replace '[^a-zA-Z0-9]+(?=\d{4}-\d{2}-\d{2})', ' - '
# Datei umbenennen
Rename-Item $_ -NewName "$neuerDateiName$erweiterung"
# Bestätigung ausgeben: Alter und neuer Dateiname
Write-Host "Umbenannt: '$($_.Name)' zu '$neuerDateiName$erweiterung'"
}
}
# Bestätigung ausgeben: Alter und neuer Dateiname
Write-Host "Umbenannt: '$($_.Name)' zu '$neuerDateiName$erweiterung'"
# Datei umbenennen
Rename-Item $_ -NewName "$neuerDateiName$erweiterung"
UndDHC schrieb:Zum Glück ist Wochenende und Langweile hast du auch noch.
Das geht auch:Keylan schrieb:Jetzt müsste man noch sicherstellen, das die resultirenden Dateinamen Eindeutig bleiben, damit das ganze nicht auf die Nase fällt, aber mit sowas wird es natürlich gleich deutlich Komplexer.
Get-ChildItem -Path "D:\" -File | ForEach-Object {
# Extrahiere den Dateinamen und die Erweiterung
$dateiName = $_.BaseName
$erweiterung = $_.Extension
# Überprüfe, ob der Dateiname das Muster "dd.mm.yyyy" enthält
if ($dateiName -match '\b(\d{2})\.(\d{2})\.(\d{4})\b') {
# Extrahiere Tag, Monat und Jahr aus dem Dateinamen
$tag = $matches[1]
$monat = $matches[2]
$jahr = $matches[3]
# Ersetze den Datumsbereich mit dem neuen Format "yyyy-mm-dd"
$neuerDateiName = $dateiName -replace '\b(\d{2})\.(\d{2})\.(\d{4})\b', "$jahr-$monat-$tag"
# Ersetze alle nicht-alphanumerischen Zeichen vor dem Datum mit einem Bindestrich
$neuerDateiName = $neuerDateiName -replace '[^a-zA-Z0-9]+(?=\d{4}-\d{2}-\d{2})', ' - '
# Setze den vollständigen neuen Dateinamen (inklusive Erweiterung)
$vollstaendigerNeuerDateiName = "$neuerDateiName$erweiterung"
$counter = 1
# Überprüfe, ob die Datei mit dem neuen Namen bereits existiert
while (Test-Path -Path (Join-Path "D:\" $vollstaendigerNeuerDateiName)) {
# Füge eine laufende Nummer hinzu, falls die Datei bereits existiert
$vollstaendigerNeuerDateiName = "$neuerDateiName-$counter$erweiterung"
$counter++
}
# Datei umbenennen
Rename-Item $_ -NewName $vollstaendigerNeuerDateiName
# Bestätigung ausgeben: Alter und neuer Dateiname
Write-Host "Umbenannt: '$($_.Name)' zu '$vollstaendigerNeuerDateiName'"
}
}
# Überprüfe, ob die Datei mit dem neuen Namen bereits existiert
while (Test-Path -Path (Join-Path "D:\" $vollstaendigerNeuerDateiName)) {
# Füge eine laufende Nummer hinzu, falls die Datei bereits existiert
$vollstaendigerNeuerDateiName = "$neuerDateiName-$counter$erweiterung"
$counter++
}
Jetzt mit Unterordnern:DHC schrieb:Noch ne Frage.
Werden in dem Skript auch alle Unterordner im Pfad
berücksichtigt?Code:Get-ChildItem -Path "D:\" -File
Get-ChildItem -Path "D:\" -File -Recurse | ForEach-Object {
# Extrahiere den Dateinamen und die Erweiterung
$dateiName = $_.BaseName
$erweiterung = $_.Extension
# Überprüfe, ob der Dateiname das Muster "dd.mm.yyyy" enthält
if ($dateiName -match '\b(\d{2})\.(\d{2})\.(\d{4})\b') {
# Extrahiere Tag, Monat und Jahr aus dem Dateinamen
$tag = $matches[1]
$monat = $matches[2]
$jahr = $matches[3]
# Ersetze den Datumsbereich mit dem neuen Format "yyyy-mm-dd"
$neuerDateiName = $dateiName -replace '\b(\d{2})\.(\d{2})\.(\d{4})\b', "$jahr-$monat-$tag"
# Ersetze alle nicht-alphanumerischen Zeichen vor dem Datum mit einem Bindestrich
$neuerDateiName = $neuerDateiName -replace '[^a-zA-Z0-9]+(?=\d{4}-\d{2}-\d{2})', ' - '
# Bestimme das Verzeichnis, in dem die Datei sich befindet
$verzeichnis = $_.DirectoryName
# Setze den vollständigen neuen Dateinamen (inklusive Erweiterung)
$vollstaendigerNeuerDateiName = "$neuerDateiName$erweiterung"
$counter = 1
# Überprüfe, ob die Datei mit dem neuen Namen bereits existiert
while (Test-Path -Path (Join-Path $verzeichnis $vollstaendigerNeuerDateiName)) {
# Füge eine laufende Nummer hinzu, falls die Datei bereits existiert
$vollstaendigerNeuerDateiName = "$neuerDateiName-$counter$erweiterung"
$counter++
}
# Vollständiger Pfad der neuen Datei
$neuerVollerPfad = Join-Path $verzeichnis $vollstaendigerNeuerDateiName
# Datei umbenennen
Rename-Item $_.FullName -NewName $neuerVollerPfad
# Bestätigung ausgeben: Alter und neuer Dateiname
Write-Host "Umbenannt: '$($_.FullName)' zu '$neuerVollerPfad'"
}
}
Kannst auch bei duckduckgo GPT4-Mini ohne Registrierung nutzen.DHC schrieb:Ich kenne mich mit ChatGPT nicht aus und bin da auch nirgendswo angemeldet. Ist, glaube ich, auch Pflicht.
Ist auch meine Empfehlung. Der bietet unzählige Optionen, auch reguläre Ausdrücke. Und man bekommt vorher angezeigt was passiert.F1database schrieb:ich benutze für sowas den Total Commander und dabei dann dass "Multi-Rename Tool"
Das geht auch als Vorschau:DHC schrieb:Sprich.
- Erst Analysieren und Ausgabedatei generieren
- Im zweiten Schritt, nach manueller Kontrolle, gemäß Ausgabedatei umbenennen
Get-ChildItem -Path "D:\" -File -Recurse | ForEach-Object {
# Extrahiere den Dateinamen und die Erweiterung
$dateiName = $_.BaseName
$erweiterung = $_.Extension
# Überprüfe, ob der Dateiname das Muster "dd.mm.yyyy" enthält
if ($dateiName -match '\b(\d{2})\.(\d{2})\.(\d{4})\b') {
# Extrahiere Tag, Monat und Jahr aus dem Dateinamen
$tag = $matches[1]
$monat = $matches[2]
$jahr = $matches[3]
# Ersetze den Datumsbereich mit dem neuen Format "yyyy-mm-dd"
$neuerDateiName = $dateiName -replace '\b(\d{2})\.(\d{2})\.(\d{4})\b', "$jahr-$monat-$tag"
# Ersetze alle nicht-alphanumerischen Zeichen vor dem Datum mit einem Bindestrich
$neuerDateiName = $neuerDateiName -replace '[^a-zA-Z0-9]+(?=\d{4}-\d{2}-\d{2})', ' - '
# Bestimme das Verzeichnis, in dem die Datei sich befindet
$verzeichnis = $_.DirectoryName
# Setze den vollständigen neuen Dateinamen (inklusive Erweiterung)
$vollstaendigerNeuerDateiName = "$neuerDateiName$erweiterung"
$counter = 1
# Überprüfe, ob die Datei mit dem neuen Namen bereits existiert
while (Test-Path -Path (Join-Path $verzeichnis $vollstaendigerNeuerDateiName)) {
# Füge eine laufende Nummer hinzu, falls die Datei bereits existiert
$vollstaendigerNeuerDateiName = "$neuerDateiName-$counter$erweiterung"
$counter++
}
# Vollständiger Pfad der neuen Datei
$neuerVollerPfad = Join-Path $verzeichnis $vollstaendigerNeuerDateiName
# Nur die Vorschau anzeigen, ohne Umbenennung
Write-Host "Vorschau: '$($_.FullName)' wuerde zu '$neuerVollerPfad' umbenannt werden."
}
}
Bei Freecommander wäre das.DHC schrieb:Erst Analysieren und Ausgabedatei generieren
In dem Beispiel ist das Umbenennen aber statisch ohne Prüfung des Datumformates.Ponderosa schrieb:Bei Freecommander wäre das.
Mit Vorschau meinte ich, das in Skript 1 erst nur eine Ausgabedatei (txt) generiert wird, dass entweder die Dateinamen vor und nach der Umbenennung beinhaltet.JennyCB schrieb:Das geht auch als Vorschau:
"C:\Ordner\Dateiname, 03.01.1985" "Dateiname - 1985-01-03"
"C:\Ordner\Dateiname; 13.02.1995" "Dateiname - 1995-02-13"
"C:\Ordner\Dateiname) 23.11.1998" "Dateiname - 1998-11-23"
rename "C:\Ordner\Dateiname, 03.01.1985" "Dateiname - 1985-01-03"
rename "C:\Ordner\Dateiname; 13.02.1995" "Dateiname - 1995-02-13"
rename "C:\Ordner\Dateiname) 23.11.1998" "Dateiname - 1998-11-23"
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser
'[^a-zA-Z0-9]+(?=\d{4}-\d{2}-\d{2})', ' - '