noob-x
Goto Top

.txt datei mittels Batch auslesen und mit ausgelesenen Daten umbenennen

Hallo,

ich bekomme viele Textdateien die ich gern nach ihrem Inhalt umbenennen würde.

In der Datei steht immer an der selben Stelle ( Zeile 7, Stelle 63 bis 70 ) eine Zahl
diese Zahl sollte dann den Dateinamen ergeben = 12345678.txt

Bitte um Eure Hilfe


Danke

Andy

Content-Key: 213760

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

Printed on: April 18, 2024 at 05:04 o'clock

Member: colinardo
colinardo Aug 08, 2013 updated at 15:12:56 (UTC)
Goto Top
Hallo Andy,
in Zeile 2 noch den Pfad zu den Textdateien angeben
@echo off & setlocal ENABLEDELAYEDEXPANSION
set "pathTXTFiles=E:\Tempfolder\Scripte"  
pushd "%pathTXTFiles%"  
for /f "tokens=* delims=" %%a IN ('dir /b /a-d *.txt') DO @(  
	call :setfilename "%%a"  
)
popd
goto end

:setfilename
for /f "usebackq skip=6 tokens=* delims=" %%m IN (%*) DO @(  
	set "filename=%%m" & set "filename=!filename:~62,8!"  
   	move %* "!filename!.txt"  
	goto :EOF
)
:end

Grüße Uwe
Member: Endoro
Endoro Aug 08, 2013 updated at 15:11:47 (UTC)
Goto Top
My 2ct:
@echo off &SETLOCAL
FOR /f "delims=" %%x IN ('dir /b /a-d *.txt') DO (  
	FOR /f "usebackqskip=6delims=" %%a IN ("%%~x") DO (  
		SET "nname=%%a"  
		SETLOCAL ENABLEDELAYEDEXPANSION
		SET "nname=!nname:~62,8!"  
		ECHO REN "%%~x" "!nname!%%~xx"  
		endlocal
	)
)
lg.
Member: bastla
bastla Aug 08, 2013 updated at 17:08:53 (UTC)
Goto Top
@ Endoro
Bei "delayedExpansion" ist immer zu berücksichtigen, ob in Dateinamen / Strings "!" vorkommen - die Sicherheitsvariante wäre, alle Variablen vor "SETLOCAL ENABLEDELAYEDEXPANSION" zu befüllen und dann nur noch lesend zu verwenden (ich unterstelle mal, dass in der Extension kein "!" enthalten ist, ansonsten auch diese einer Variablen zuweisen):
@echo off &SETLOCAL
FOR /f "delims=" %%x IN ('dir /b /a-d *.txt') DO (  
    FOR /f "usebackqskip=6delims=" %%a IN ("%%~x") DO (  
        SET "nname=%%a" & SET "datei=%%x"  
        SETLOCAL ENABLEDELAYEDEXPANSION
        ECHO REN "!datei!" "!nname:~62,8!%%~xx"  
        endlocal
    )
)
Bei Deinem Ansatz würde eine Datei namens "Ein!kann!vorkommen.txt" auf "Einvorkommen.txt" (wenn %kann% nicht existiert) reduziert, da sich "delayedExpansion" auch auf den Inhalt von Schleifenvariablen auswirkt.

@ colinardo
Da Du von Anfang an "delayedExpansion" verwendest, ergibt sich bei Deiner Version das gleiche Problem ...

Grüße
bastla
Member: Endoro
Endoro Aug 08, 2013 at 19:31:41 (UTC)
Goto Top
@bastla ich weiss, danke nochmal.
Man darf auch nicht callen mit einem Dateinamen huckepack wie colinardo das macht ...
lg.
Member: bastla
bastla Aug 08, 2013 at 19:35:22 (UTC)
Goto Top
@ Endoro
Was meinst Du mit
Man darf auch nicht callen mit einem Dateinamen huckepack
?

Grüße
bastla
Member: Endoro
Endoro Aug 08, 2013 at 19:42:08 (UTC)
Goto Top
@bastla
Ein Beispiel:
@echo off &SETLOCAL
SET "filename=120%%"  
ECHO %filename% vor dem CALL
CALL:sub "%filename%"  
EXIT /b

:sub
ECHO %~1 nach dem CALL
EXIT /b
120% vor dem CALL
120 nach dem CALL
face-smile lg.
Member: bastla
bastla Aug 08, 2013 at 19:49:48 (UTC)
Goto Top
@ Endoro
Andere Baustelle, aber klar - das macht man/frau sich ja zB auch mit einem direkten "call" der Art
call set "Var=%%Var:%Suchen%=%Ersetzen%%%"
zunutze ...

Grüße
bastla
Member: noob-x
noob-x Aug 09, 2013 at 08:44:10 (UTC)
Goto Top
Hallo,


funktioniert genau so wie ich es brauche.

vielen vielen Dank an Alle.

Grüße

Andy