Dateinamen ändern
Hallo
Ich habe eine Batch-Datei um Unterordner in einzelne rar-Archive zu packen:
Der Name der rar ist dabei immer Ordner-Unterordner.rar.
Die Unterordner haben verschiedene Namen. Einige sind einfach nur (teils dezimale) Zahlen, andere enthalten Text, entweder in der Form text_zahl oder buchschabeZahl (direkt hintereinander, ohne Leerzeichen oder Unterstrich).
Um dies Archive weiter zu verarbeiten muss der Dateiname mit über einen Regulären Ausdruck verarbeitet werden. Allerdings funktioniert dies nicht, da die Zahl am Ende des Namens nicht richtig abgetrennt ist.
Kann man die Batch so anpassen, dass die Zahl (unschiedlich viele Ziffern, manche dezimal mit . ) durch einen zusätzlichen Bindestrich abgetrennt wird?
Grüße
ps: Der Name muss angeasst werden, bevor die rar-Datei erstellt wird, da die Batch später zum aktuallisieren erneut verwendet werden soll und die Archive sonst doppeerstellt werden würden.
Ich habe eine Batch-Datei um Unterordner in einzelne rar-Archive zu packen:
for /d %%i in ("%dir%\*") do (
for /d %%j in ("%%i") do ren "%%j\*.cbr" *.rar >NUL 2>&1
for /d %%j in ("%%i\*") do rar a -r -o- -ep1 -inul "%%~dpj%%~nxi_-_%%~nxj.rar" "%%j"
for /d %%j in ("%%i") do ren "%%j\*.rar" *.cbr >NUL 2>&1
echo %%i verarbeitet
)
Der Name der rar ist dabei immer Ordner-Unterordner.rar.
Die Unterordner haben verschiedene Namen. Einige sind einfach nur (teils dezimale) Zahlen, andere enthalten Text, entweder in der Form text_zahl oder buchschabeZahl (direkt hintereinander, ohne Leerzeichen oder Unterstrich).
Um dies Archive weiter zu verarbeiten muss der Dateiname mit über einen Regulären Ausdruck verarbeitet werden. Allerdings funktioniert dies nicht, da die Zahl am Ende des Namens nicht richtig abgetrennt ist.
Kann man die Batch so anpassen, dass die Zahl (unschiedlich viele Ziffern, manche dezimal mit . ) durch einen zusätzlichen Bindestrich abgetrennt wird?
Grüße
ps: Der Name muss angeasst werden, bevor die rar-Datei erstellt wird, da die Batch später zum aktuallisieren erneut verwendet werden soll und die Archive sonst doppeerstellt werden würden.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 212054
Url: https://administrator.de/forum/dateinamen-aendern-212054.html
Ausgedruckt am: 21.04.2025 um 13:04 Uhr
8 Kommentare
Neuester Kommentar
Zitat von @Thorsten90:
Momentan erkennt der reguläre Ausdruck die Länge der Zahl nicht richtig und nimmt einige Ziffern zum
davorstehenden Namen.
Momentan erkennt der reguläre Ausdruck die Länge der Zahl nicht richtig und nimmt einige Ziffern zum
davorstehenden Namen.
Das ist ein merkwürdiger regulärer Ausdruck.
Also mit Regex ist die Trennung einer Zeichenkette an der Grenze Buchstabe/Ziffer eigentlich einfacher als mit Batch.
Könnte man dort ansetzen und den Regex-Ausdruck verbessern?
lg
Die Calibre-Regex konnte ich nicht testen.
Deshalb ein Vorschlag mit sed:
Je vielgestaltiger der Input desto komplizierter die Regex, um alles zu erfassen.
Bei all diesen Beispielen ist jedenfalls ein
lg
Deshalb ein Vorschlag mit sed:
>for /f "delims=" %a in ('dir /b/a-d/s *.rar') do @echo %~fa|sed -r "s/.*\\([^\]*[[:alpha:]_ -]+\.*)([0-9][0-9.]*.rar)$/echo ren \"^&\" \"\1-\2\"/e"
ren "C:\Hauptverzeichnis\Ordner_1\Unterordner_1\Ordner_1-Unterordner 10.1.rar" "Ordner_1-Unterordner -10.1.rar"
ren "C:\Hauptverzeichnis\Ordner_1\Unterordner_1\Ordner_1-Unterordner.10.1.rar" "Ordner_1-Unterordner.-10.1.rar"
ren "C:\Hauptverzeichnis\Ordner_1\Unterordner_1\Ordner_1-Unterordner1.1.rar" "Ordner_1-Unterordner-1.1.rar"
ren "C:\Hauptverzeichnis\Ordner_1\Unterordner_1\Ordner_1-Unterordner10.1.rar" "Ordner_1-Unterordner-10.1.rar"
ren "C:\Hauptverzeichnis\Ordner_1\Unterordner_1\Ordner_1-Unterordner_1.rar" "Ordner_1-Unterordner_-1.rar"
ren "C:\Hauptverzeichnis\Ordner_1\Unterordner_1\Ordner_1-Unterordner_10.1.rar" "Ordner_1-Unterordner_-10.1.rar"
ren "C:\Hauptverzeichnis\Ordner_1\Unterordner_2\Ordner_1-Unterordner_2.rar" "Ordner_1-Unterordner_-2.rar"
ren "C:\Hauptverzeichnis\Ordner_1\Unterordner_3\Ordner_1-Unterordner_3.rar" "Ordner_1-Unterordner_-3.rar"
ren "C:\Hauptverzeichnis\Ordner_2\Unterordner1\Ordner_3-Unterordner1.rar" "Ordner_3-Unterordner-1.rar"
ren "C:\Hauptverzeichnis\Ordner_2\Unterordner2\Ordner_2-Unterordner2.rar" "Ordner_2-Unterordner-2.rar"
ren "C:\Hauptverzeichnis\Ordner_2\Unterordner3\Ordner_2-Unterordner3.rar" "Ordner_2-Unterordner-3.rar"
ren "C:\Hauptverzeichnis\Ordner_3\Unterordner_1\Ordner_3-Unterordner_1.rar" "Ordner_3-Unterordner_-1.rar"
ren "C:\Hauptverzeichnis\Ordner_3\Unterordner_2\Ordner_3-Unterordner_2.rar" "Ordner_3-Unterordner_-2.rar"
ren "C:\Hauptverzeichnis\Ordner_3\Unterordner_3\Ordner_3-Unterordner_3.rar" "Ordner_3-Unterordner_-3.rar"
Bei all diesen Beispielen ist jedenfalls ein
-
vor der Zahl.lg