floggy
Goto Top

Dateinamen auslesen und Umbenennen

Hallo Liebe Gemeinde face-smile

ich bräuchte mal wieder einen Batch ^^

Folgendes Szenario:

Ein Ordner wird mit Dateien befüllt die folgenden aufbau haben:
ede20c1ff9f6143e2486ed5b1435df78

Diese Dateien müssen umbenannt werden mit folgendem Aufbau:

rot_lila_grün

Könnt ihr mir dabei helfen`?

Danke face-smile

Content-ID: 210868

Url: https://administrator.de/forum/dateinamen-auslesen-und-umbenennen-210868.html

Ausgedruckt am: 22.04.2025 um 06:04 Uhr

Endoro
Endoro 08.07.2013 um 15:47:09 Uhr
Goto Top
Hallo Floggy,

mein Vorschlag mit sed:
>echo EEEL0001_000851_76136437_34364249|sed -r "s/(\w+)_(\w+)_(\w+)_(\w+)/\4_\2_\1/"
34364249_000851_EEEL0001

lg
Biber
Biber 08.07.2013 aktualisiert um 16:10:17 Uhr
Goto Top
Moin floggy,

ich würde da nicht so viel Heckmeck drum machen.

Am Cmd-Prompt in das verzeichnis mit den Dateien wechseln und dann
ohne das ">" am Anfang; das soll der Prompt sein
>for /f "delims=_ tokens=1-4" %a in ('dir /b /a-d "eeel0001_*_*_*"') do @echo ren "%a_%b_%c_%d" "%d_%b_%a"

Vorausgesetzt, di Dateien haben wirklich keine Extension - wenn doch, dann
- die tokens auf 1-5,
- die delims auf "_." und
- die Laufvariablen um %e erweitern.

Wenn ich den DIR-Befehl nur anwende auf alle Dateien der Konvention "eeeel0001_*_*_*", dann wäre mir das sicher genug.

Grüße
Biber
Floggy
Floggy 09.07.2013 aktualisiert um 08:36:03 Uhr
Goto Top
Die Konvention ist nicht immer "eeel0001" diese ist auch variable.
Und ich bräuchte eine Batchdatei, da der Ordner täglich mit hunderten Dateien gefüllt wird.
Endoro
Endoro 09.07.2013 um 09:01:47 Uhr
Goto Top
Hallo,

du brauchst mit sed kein besonderes Script.
Einfach den Befehl vom Kommandoprompt absetzen oder in eine BAT schreiben.
Sie dir den output an und lösch das Wort echo, wenn alles OK ist.

 dir /b /a-d |sed -nr "/(\w+)_(\w+)_(\w+)_(\w+)/s//echo ren \"^&\" \"\4_\2_\1\"/ep"

lg
Floggy
Floggy 09.07.2013 um 09:08:23 Uhr
Goto Top
@Endoro
Ich würde doch gerne bei einem "normalen" batch bleiben, da ich diese "SED" routine installieren müsste.

@Biber
ich werde deine Befehlszeile wie folgt probieren :
for /f "delims=_ tokens=1-4" %a in ('dir /b /a-d *_*_*_*') do @echo ren "%a_%b_%c_%d" "%d_%b_%a"
Floggy
Floggy 09.07.2013 um 09:14:52 Uhr
Goto Top
Ich versteh grad nichts mehr ^^
ich glaub ich mach mehr kaputt als zum funktionieren zu bringen -.-
Floggy
Floggy 09.07.2013 um 10:01:34 Uhr
Goto Top
gelöst


set "Ordner=C:\test"
pushd "%Ordner%"
pause
for /f "delims=_ tokens=1-4" %%i in ('dir /b /a-d *_*_*_*') do ren %%i_%%j_%%k_%%l %%l_%%j_%%i
popd