Seite 1 von 2
mehrere Dateien im Explorer gleichzeitig umbenennen und Klammern entfernen
Verfasst: 08.03.2025, 19:04
von Karthagos
Hallo, im Explorer kann ich mehrere Dateien markieren und einen gemeinsamen Dateinamen vergeben.
Zur Unterscheidung werden die Dateinamen durch eine fortlaufende Zahl in Klammern ergänzt. Wie kann ich die Klammern entfernen, sodass nur noch die Zahl angezeigt wird.
- Beispiel: Test (1).jpg, Test (2).jpg usw. in Test 1.jpg, Test 2.jpg usw.
Natürlich kann ich das mit IrfanView oder einem Umbenennungstool realisieren, aber das ist bei wenigen Dateien aufwändig.
Ich hatte versucht, das Script von Holgi aus dem Beitrag
viewtopic.php?t=32904&hilit=removebg
@echo off
setlocal enabledelayedexpansion
:: Definiere den zu entfernenden Text
set "REMOVE_TEXT=-removebg-preview"
:: Durchlaufe alle Dateien im Ordner
for %%F in (*%REMOVE_TEXT%*.*) do (
set "OLDNAME=%%F"
set "NEWNAME=%%F"
set "NEWNAME=!NEWNAME:%REMOVE_TEXT%=!"
if not "!OLDNAME!"=="!NEWNAME!" ren "!OLDNAME!" "!NEWNAME!"
)
echo Umbenennung abgeschlossen.
pause
umzuschreiben, aber das ist mir nicht gelungen. Hoffe, es hat noch jemand einen Tipp
Re: mehrere Dateien im Explorer gleichzeitig umbenennen und Klammern entfernen
Verfasst: 08.03.2025, 20:28
von Holgi
als Powershell Script:
Code: Alles auswählen
# -*- coding: utf-8 -*-
# Laden der Windows Forms Bibliothek für den Ordnerdialog
Add-Type -AssemblyName System.Windows.Forms
# Erstellen des Ordnerauswahldialogs
$folderBrowser = New-Object System.Windows.Forms.FolderBrowserDialog
$folderBrowser.Description = "Wählen Sie den Ordner mit den Dateien aus:"
$folderBrowser.RootFolder = "MyComputer"
# Ordnerdialog anzeigen und Ergebnis speichern
$dialogResult = $folderBrowser.ShowDialog()
# Falls kein Ordner ausgewählt wurde, Skript beenden
if ($dialogResult -ne [System.Windows.Forms.DialogResult]::OK -or [string]::IsNullOrWhiteSpace($folderBrowser.SelectedPath)) {
Write-Host "Kein Ordner ausgewählt. Skript wird beendet." -ForegroundColor Red
exit
}
# Gewählten Ordner speichern
$ordner = $folderBrowser.SelectedPath
Write-Host "Gewählter Ordner: $ordner" -ForegroundColor Cyan
# Dateien suchen, die dem Muster "(n)" entsprechen
$files = Get-ChildItem -Path $ordner -File | Where-Object { $_.Name -match '\(\d+\)' }
# Falls keine passenden Dateien gefunden werden
if ($files.Count -eq 0) {
Write-Host "Keine passenden Dateien gefunden. Skript wird beendet." -ForegroundColor Yellow
exit
}
# Dateien umbenennen
foreach ($file in $files) {
# Neuen Dateinamen generieren (Klammern entfernen)
$newName = $file.Name -replace '\((\d+)\)', ' $1'
$newPath = Join-Path -Path $ordner -ChildPath $newName
# Überprüfen, ob der neue Dateiname bereits existiert
if (!(Test-Path -Path $newPath)) {
Rename-Item -Path $file.FullName -NewName $newName
Write-Host "Umbenannt: $($file.Name) -> $newName" -ForegroundColor Green
} else {
Write-Host "Übersprungen: $newName existiert bereits." -ForegroundColor Yellow
}
}
Write-Host "Fertig! Alle passenden Dateien wurden umbenannt." -ForegroundColor Cyan
z.B: als rename.ps1 abspeichern (im UTF8 Format)
Set-ExecutionPolicy Unrestricted -Scope Process
.\rename.ps1
Re: mehrere Dateien im Explorer gleichzeitig umbenennen und Klammern entfernen
Verfasst: 08.03.2025, 20:47
von Karthagos
Hallo Holgi, vielen Dank. Habe das Script als rename.ps1 im UTF8-Format im entsprechenden Ordner gespeichert.
rename.jpg
Aber mit dem Ausführen in Powershell komme ich leider nicht weiter, bitte nochmal um Unterstützung.
Re: mehrere Dateien im Explorer gleichzeitig umbenennen und Klammern entfernen
Verfasst: 08.03.2025, 23:26
von Holgi
Das Script muss nicht im Ordner mit den Dateien liegen!
Starte Powershell als Admin
dann eingeben:
Set-ExecutionPolicy Unrestricted -Scope Process
dann eingeben:
.\rename.ps1
Es öffnet sich ein Fenster und da gibst du dann den Ordner an, in welchem sich die umzubenenenden Dateien befinden
Re: mehrere Dateien im Explorer gleichzeitig umbenennen und Klammern entfernen
Verfasst: 08.03.2025, 23:34
von Holgi
du kannst auch dieses Script nehmen. Unterschied: hier musst du zuvor im Script selbst den Ordner vorgeben (ändere "Bilder neu" in deinen Ordnernamen):
die Vorgehensweise ist sonst gleich. PS öffnen. > Execution policy > .\rename2.ps1
rename2.ps1
Code: Alles auswählen
# -*- coding: utf-8 -*-
# Fester Ordnerpfad (Hier anpassen!)
$ordner = "C:\Bilder neu" # <--- ÄNDERE DIESEN PFAD NACH BEDARF
# Überprüfen, ob der Ordner existiert
if (!(Test-Path -Path $ordner -PathType Container)) {
Write-Host "Der angegebene Ordner existiert nicht: $ordner" -ForegroundColor Red
exit
}
Write-Host "Verwender Ordner: $ordner" -ForegroundColor Cyan
# Dateien suchen, die dem Muster "(n)" entsprechen
$files = Get-ChildItem -Path $ordner -File | Where-Object { $_.Name -match '\(\d+\)' }
# Falls keine passenden Dateien gefunden werden
if ($files.Count -eq 0) {
Write-Host "Keine passenden Dateien gefunden. Skript wird beendet." -ForegroundColor Yellow
exit
}
# Dateien umbenennen
foreach ($file in $files) {
# Neuen Dateinamen generieren (Klammern entfernen)
$newName = $file.Name -replace '\((\d+)\)', ' $1'
$newPath = Join-Path -Path $ordner -ChildPath $newName
# Überprüfen, ob der neue Dateiname bereits existiert
if (!(Test-Path -Path $newPath)) {
Rename-Item -Path $file.FullName -NewName $newName
Write-Host "Umbenannt: $($file.Name) -> $newName" -ForegroundColor Green
} else {
Write-Host "Übersprungen: $newName existiert bereits." -ForegroundColor Yellow
}
}
Write-Host "Fertig! Alle passenden Dateien wurden umbenannt." -ForegroundColor Cyan
Re: mehrere Dateien im Explorer gleichzeitig umbenennen und Klammern entfernen
Verfasst: 09.03.2025, 00:28
von Holgi
wenn dir das mit dem Powershellaufruf zu kompliziert ist, dann kann du auch eine zusätzliche Batch-Datei erstellen mit folgendem Inhalt:
rename.cmd
Code: Alles auswählen
@ECHO OFF
PowerShell.exe -NoProfile -Command "& {Start-Process PowerShell.exe -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File ""%~dpn0.ps1""' -Verb RunAs}"
abspeichern dann als rename.batch bzw. rename2.batch oder eben genau (!) so, wie der Name des PS-Scripts, nur eben mit der Endung .cmd
Diese Datei muss im gleichen Ordner sein, wie das PS-Script.
Dann einfach mit Doppelklick die .cmd aufrufen (die dann das PS-Script ausführt). Du sparst dir also das Öffnen einer Powershell-Konsole.
Re: mehrere Dateien im Explorer gleichzeitig umbenennen und Klammern entfernen
Verfasst: 09.03.2025, 10:01
von Karthagos
Hallo Holgi,
habe mich jetzt (mit Deinen Erklärungen) an Powershell und .\rename.ps1 gewagt.
Die rename.ps1 habe ich in das Verzeichnis mit den Bildern gelegt, aber ich denke, das ist nicht relevant.
Leider kommt eine Fehlermeldung
rename.jpg
Re: mehrere Dateien im Explorer gleichzeitig umbenennen und Klammern entfernen
Verfasst: 09.03.2025, 10:05
von g-force
Das ".\" vor "rename.ps1" ist mMn nicht richtig bzw. überflüssig. Evtl. den kompletten Pfad eingeben.
Re: mehrere Dateien im Explorer gleichzeitig umbenennen und Klammern entfernen
Verfasst: 09.03.2025, 10:26
von Karthagos
Hallo g-force, vielen Dank, mit dem Befehl "O:\Kopie\rename.ps1", also komplettem Pfadnamen hat es funktioniert.
Das Ergebnis weist allerdings zwei Leerzeichen vor der Zahl aus, ich vermute das muss man im Script ändern.
P.S. Die doppelten Leerzeichen habe ich über eine Scriptänderung wegbekommen
Außerdem werde ich mal die anderen Vorschläge von Holgi testen, über cmd wäre es mir natürlich am liebsten.
Re: mehrere Dateien im Explorer gleichzeitig umbenennen und Klammern entfernen
Verfasst: 09.03.2025, 10:45
von Karthagos
Hallo Holgi und g-force, habe das Ganze jetzt mit der batch-Lösung hinbekommen, so ist es perfekt.
Vielen Dank nochmals für Eure kompetente Hilfe

und einen schönen Sonntag
Re: mehrere Dateien im Explorer gleichzeitig umbenennen und Klammern entfernen
Verfasst: 09.03.2025, 10:47
von g-force
Du kannst ja mal diese CMD testen (muß im gleichen Ordner wie die Dateien liegen):
Code: Alles auswählen
@echo off
setlocal enabledelayedexpansion
:: Den Ordner des Skripts verwenden
set "ordner=%~dp0"
:: Überprüfen, ob der Ordner existiert
if not exist "%ordner%" (
echo Der Ordner existiert nicht. Skript wird beendet.
exit /b
)
:: Dateien suchen, die dem Muster "(n)" entsprechen
for %%f in (%ordner%(*(*).*) ) do (
set "file=%%~nxf"
echo !file! | findstr /r "\([0-9]*\)" >nul
if !errorlevel! equ 0 (
:: Neuen Dateinamen generieren (Klammern entfernen)
set "newName=!file:(= !"
set "newName=!newName:) =!"
:: Überprüfen, ob der neue Dateiname bereits existiert
if not exist "%ordner%\!newName!" (
ren "%%f" "!newName!"
echo Umbenannt: %%f -> !newName!
) else (
echo Uebersprungen: !newName! existiert bereits.
)
)
)
echo Fertig! Alle passenden Dateien wurden umbenannt.
endlocal
Re: mehrere Dateien im Explorer gleichzeitig umbenennen und Klammern entfernen
Verfasst: 09.03.2025, 11:15
von Holgi
hier noch mal wie es aussieht, ohne
vor dem rename in Powershell:
Powershell fail.JPG
so mit
vor dem rename in Powershell:
Powershell good.JPG
und so läuft es dann:
Powershell done.JPG
Re: mehrere Dateien im Explorer gleichzeitig umbenennen und Klammern entfernen
Verfasst: 09.03.2025, 11:28
von Holgi
@g-force:
hast du dein Script einmal selbst getestet? bei mir funzt es nicht.
Darüberhinaus hatte ich selbst schon Versuche angestellt, das mit einfachem Batch statt Powershell hinzubekommen, jedoch werden die Metadateien bei .jpg durch das Umbenennen mit .cmd zerstört.
Also selbst wenn dann die Klammern wegwaren, waren die Bilder nicht mehr anzeigbar.
Re: mehrere Dateien im Explorer gleichzeitig umbenennen und Klammern entfernen
Verfasst: 09.03.2025, 11:53
von g-force
Nein, habe ich nicht getestet. Daß dabei Metadaten zerstört werden, ist natürlich mehr als suboptimal.
Re: mehrere Dateien im Explorer gleichzeitig umbenennen und Klammern entfernen
Verfasst: 09.03.2025, 12:06
von DK2000
Wie sah denn die Batch aus, welche Metadaten zerstört? Das kenne ich so noch nicht.