Batch Batch-Rename mehrerer Dateien auf einmal mit gewissen Anforderungen

DJMadMax

Fleet Admiral
Registriert
Mai 2007
Beiträge
15.881
Heyho liebes CB-Forum,

ich habe folgenden Sachverhalt:

Einen Ordner mit mehrern Dateien darinliegend - es handelt sich um heruntergeladene YouTube-Clips für unterwegs.

Diese stammen aus einem LetsPlay und sind somit durchnummeriert.

Nun kommt das Problem:
Die Nummerierung steht NICHT am Anfang des Dateinamen, sondern ist mit immer festem Schema: "...#S01E104..." benannt.

Es wäre denkbar elegant, wenn die Folgennummer also am Anfang des Dateinamen steht und danach weiterhin die Folgenbezeichnung (die ja aktuell am Anfang der Datei steht).

Per DOS-Batch bekomme ich's auf die Schnelle leider nicht hin, aber vielleicht habe ich auch einfach nur irgendwo einen Denkfehler.

Zur Not wäre auch Office Enterprise 2016 (Access mit VBA) vorhanden, falls da jemand scripttechnisch fit ist.

Bin gespannt, ob ihr ne Lösung parat habt.
Vielen Dank im Voraus :)

Cya, Mäxl
 
Bulk Rename Utility scheint ja großartig zu sein, vielen Dank!

Leider bekomme ich es aktuell nicht hin, dass er einen gewissen Teil des Dateinamens (also Teilstring) ab dem zu suchenden und zutreffenden Teilstring (wäre in meinem Fall die Raute "#") komplett an den Anfang schreibt.

Aus

"Dies ist eine tolle Datei #004.xyz"
soll also werden
"#004 Dies ist eine tolle Datei.xyz"

Geht das mit dem Bulk Rename Utility?

Cya, Mäxl
 
In 2 Schritten geht das sicher.

dateiname_#004.asd -> #004dateiname_#004.asd -> #004dateiname.asd

Rename Master oder Total Commander können das auch.
 
Okay, wenn man erst einmal durchgestiegen ist, ist das Bulk Rename Utility ein wirklich mächtiges Werkzeug! Klar, das von mir Vorgehabte ging nicht zwingend in einem Schritt, zumal dann teils noch richtig miese und ungleiche Schreibweisen dabei waren (hier half der Filter unter "12" inkl. Case Sensitive-Erkennung etc.).

Demnach kann ich jedem nur das von anra8000 empfohlene Tool an's Herz legen!

Vielen lieben Dank :)

Cya, Mäxl
 
Hi,
ansonsten kannst du das per Batch so in etwa machen, es werden alle Dateien mit der Endung xyz nach dem Muster umbenannt:
Code:
@echo off & Setlocal EnableDelayedExpansion & title %~n0
cls

set "Verzeichnis=%~d0"
set "Typ=xyz"
set entfHinten=4

pushd %Verzeichnis% || goto :eof
for /f "delims=" %%i in ('dir /b a-d "*.%Typ%"') do (
    set "DateiName=%%~ni"
    set "DateiSuffix=%%~xi"
    set "DateiPrefix=!DateiName:~-%entfHinten%!"
    set "NeueDateiName=!Dateiname:~0,-%entfHinten%!"
    echo ren "%%i" "!DateiPrefix! !NeueDateiName!!DateiSuffix!"
    endlocal
)
pause>Nul
Soll der letzte Leerzeichen auch noch weg, muss du es einfach nur ergänzen und eine Stelle entfernen. Wie das geht sollte es aus dem Code ersichtlich sein, ansonsten Frag einfach.
Das echo vor dem ren entfernen wenn alles passt.
 
Raketenjoint schrieb:
Kenne mich leider nur in Linux aus und hätte rename, awk und co. gezückt.
Ähnlich sieht es in diesem Artikel aus.
Dafür kann man ja die Cygwin-Tools installieren. ;)
 
Wie gesagt, meinerseits ist das Problem abgeschlossen, das Bulk Rename Utility ist wirklich mächtig, man muss aber bei komplexeren Umbenennungen zwei, dreimal um die Ecke denken und ggf. das Programm mehrmals mit verschiedenen Einstellungen durchlaufen lassen, damit man all seine wirren Umbenennungen auf die Reihe bekommt ^^

Vielen Dank nochmals an all die Mithilfe.

PS:
Das Batch speichere ich mir mal, kann man auch immer gebrauchen sowas :)

Cya, Mäxl
 
Hi,
da ich heute Morgen etwas Langeweile hatte, ist eine Batch rausgekommen die genau das macht was du möchtest.
Ich weiß du brauchst sie nicht mehr, aber wie gesagt 4 fun halt ;)
Es geht immer noch mit den alten Tools und 30 min Zeit :evillol:
Code:
@echo off & Setlocal EnableDelayedExpansion & title %~n0
cls

::aus: Dies ist eine #E01S104 tolle Datei.xyz
::wird: E01S104 Dies ist eine tolle Datei.xyz

set "Verzeichnis=%~d0"
set "Typ=xyz"
set "Laenge=7"

pushd %Verzeichnis% || goto :eof
for /f "delims=" %%i in ('dir /b a-d "*.%Typ%"') do (
	set "DateiName=%%~ni"
	set "DateiSuffix=%%~xi"
	
	for /f "delims=# tokens=1" %%j in ("!DateiName!") do set "DateiNameVorn=%%j"
	for /f "delims=# tokens=2" %%k in ("!DateiName!") do set "DateiNameMitten=%%k"
	for /f "delims=# tokens=2" %%l in ("!DateiName!") do set "DateiNameHinten=%%l"

	set "DateiNameMitten=!DateiNameMitten:~0,%Laenge%!"
	set "DateiNameHinten=!DateiNameHinten:~%Laenge%!"
	set "DateiNameHinten=!DateiNameHinten:~1!"

	echo ren "%%i" "!DateiNameMitten! !DateiNameVorn!!DateiNameHinten!!DateiSuffix!"
    endlocal
)
pause>Nul
 
@Entilzha
Ich vermute, Du hast die beiden Scripte nicht getestet?
Du rufst bei beiden endlocal innerhalb der Schleife auf.
Deswegen funktionieren beide Skripte nur für die erste gefundene Datei ...
 
Hi, stimmt das endlocal muss selbstverständlich raus aus der For Schleife, dann laufen beide Problemlos mit mehr als nur eine Datei :)
 
Zurück
Oben