.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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 213760
Url: https://administrator.de/contentid/213760
Ausgedruckt am: 16.11.2024 um 11:11 Uhr
8 Kommentare
Neuester Kommentar
Hallo Andy,
in Zeile 2 noch den Pfad zu den Textdateien angeben
Grüße Uwe
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
@ Endoro
Bei "
Bei Deinem Ansatz würde eine Datei namens "Ein!kann!vorkommen.txt" auf "Einvorkommen.txt" (wenn %kann% nicht existiert) reduziert, da sich "
@ colinardo
Da Du von Anfang an "
Grüße
bastla
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
)
)
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
@bastla ich weiss, danke nochmal.
Man darf auch nicht callen mit einem Dateinamen huckepack wie colinardo das macht ...
lg.
Man darf auch nicht callen mit einem Dateinamen huckepack wie colinardo das macht ...
lg.
@bastla
Ein Beispiel:
lg.
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