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-Key: 210868

Url: https://administrator.de/contentid/210868

Printed on: April 20, 2024 at 00:04 o'clock

Member: Endoro
Endoro Jul 08, 2013 at 13:47:09 (UTC)
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
Member: Biber
Biber Jul 08, 2013 updated at 14:10:17 (UTC)
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
Member: Floggy
Floggy Jul 09, 2013 updated at 06:36:03 (UTC)
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.
Member: Endoro
Endoro Jul 09, 2013 at 07:01:47 (UTC)
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
Member: Floggy
Floggy Jul 09, 2013 at 07:08:23 (UTC)
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"
Member: Floggy
Floggy Jul 09, 2013 at 07:14:52 (UTC)
Goto Top
Ich versteh grad nichts mehr ^^
ich glaub ich mach mehr kaputt als zum funktionieren zu bringen -.-
Member: Floggy
Floggy Jul 09, 2013 at 08:01:34 (UTC)
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