experiment626
Goto Top

Bestimmte Zeile - ab bestimmter Position XY einer Textdatei als Dateinamen verwenden

Wie kann ich aus einer Textdatei (Bef12345.txt /Txt-Datei immer verschieden, aber nach dem Muster Bef*.txt) an immer der selben Zeile (21) den Name und Geburtstatum als Dateinamen verwenden, wobei ich am liebsten das Format 14061968_Mustermann, Karl hätte.
Die Zeile ist immer wie folgt aufgebaut.

" Patient: Mustermann, Karl *14.06.1968"

9 Leerzeichen stehen vor Patient: sind immer da und die Position des Geburtstags (* Postion 56) ist immer an der gleichen Stelle, wie angegeben - es sind aber keine Anführungszeichen vorhanden.

Ich hab vergeblich aus anderen Forenmeldungen etwas abzuwandeln - habs nicht hinbekommen.
Bewunderswert, wie einige soviel mit FOR und FINDSTR rausholen könne, ich kanns nicht.
Für Eure Hilfe vielen Dank.

Stitch

Content-Key: 64397

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

Ausgedruckt am: 28.03.2024 um 18:03 Uhr

Mitglied: miniversum
miniversum 22.07.2007 um 10:36:57 Uhr
Goto Top
Versuchs mal damit (ungetestet, erst an ner Kopie versuchen!!!):
@echo off & setlocal enabledelayedexpansion
for /F "delims=" %%F in ('dir /b /a-D Bef*.txt') do (  
set "Line="  
for /F "skip=20 delims=" %%L in ("%%F") do if not defined Line set Line=%%L  
for /F "tokens=2,3,5,6,7 delims= ." %%N in ('echo !Line!') do set "newname=%%P%%Q%%R_%%N %%O"  
ren "%%F" "!newname!"  
)

miniversum
Mitglied: Experiment626
Experiment626 22.07.2007 um 11:25:55 Uhr
Goto Top
Hallo vielen dank erstmal,
aber ich bekomme folgende Meldung:

"."" ist syntaktisch an dieser Stelle nicht verarbeitbar.
Falscher Parameter.
"."" ist syntaktisch an dieser Stelle nicht verarbeitbar.
Falscher Parameter.

Danke.
Mitglied: miniversum
miniversum 22.07.2007 um 12:47:12 Uhr
Goto Top
ok nachmal geprüft udn diesmal auch getestet:
@echo offfor /F "delims=" %%F in ('dir /b /a-D Bef*.txt') do call:ProzFile "%%F"  
goto:eof

:ProzFile
set "Line="  
for /F "skip=20 delims=" %%L in (%~1) do if not defined Line set Line=%%L  
for /F "tokens=2,3,4,5,6 delims=.* " %%N in ('echo %Line%') do set "newname=%%P%%Q%%R_%%N, %%O"  
ren "%~1" "%newname%%~x1"  
goto:eof
Mitglied: Experiment626
Experiment626 22.07.2007 um 22:39:36 Uhr
Goto Top
Ich kann einfach nur sagen - echt spitze. Genauso habe ich mir das vorgestellt.

Hab vielen Dank für Deine schnelle Hilfe.

Stitch