86longrunner

Batch String ab flexiebler Länge in fixer Länge Zeichen auslesen oder extrahiere aus String ab der Stelle XXX in der Länge YYY

Hallo,

ins Forum, als Newbie hier meine erste Frage und freue mich auf eure Unterstützung:

nach langem Suchen habe ich leider keine Lösung für mein Problem gefunden:

Ich habe eine Datei in unstrukturiertem Format an komplett verscheiderner Stelle kann die gesuchte Information stehen.
Beispieldatensatz:
‚%A]!!!‚@
5hs:ccce/wcs/j_security_checkj_username0001904594j_password ...und so weiter

Das einzige fixe Kirterium ist die Textzeile "checkj_username" ab dieser Textstelle (welche immer an unterscheidlicher Position in der Datei steht).

Mein Problem: Nach der Stelle checkj_username muß ich die Werte in der Länge von 10 Zeichen extrahieren.

Mein Ansatz:

for /f "tokens=*" %%i in ('find /n "checkj_username" d:\test.txt') do echo %%i | find "checkj_username" > nul && call :AWC_User %%i

:AWC_User
set _Satz="%*"

In %_Satz% ist soweit dieser Inhalt:

"[jlk6631]‚IYu
oafgfg-rrrr.de/wcsdsds/uips:/-test-wcs.wdfdf.de/wswd/j_security_checkj_username5555555555j_password"
"[666576765775]‚3]]asdf.oity_checkps:atrtr.oadfg.de/wcs/j_security_checkj_username5555555555j_password"

Jetzt sollte ich ab der Stelle nach ...username die nächsten 10 Stellen.

Nachtrag: Vereinfacht ausgedrückt suche ich nach einer Funktion/Routine in Batch welche dem Befehl "Extrahiere aus String; ab der StelleXXX; in der LängeXXX


Vielen Dank für eure Hilfe
Longrunner
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 264352

Url: https://administrator.de/forum/batch-string-ab-flexiebler-laenge-in-fixer-laenge-zeichen-auslesen-oder-extrahiere-aus-string-ab-der-stelle-264352.html

Ausgedruckt am: 05.07.2025 um 01:07 Uhr

114757
Lösung 114757 24.02.2015 aktualisiert um 11:18:01 Uhr
Goto Top
Moin,
z.B. so
@echo off & setlocal enabledelayedexpansion
for /f "tokens=*" %%i in ('find /n "checkj_username" d:\test.txt') do (  
   set "line=%%i"  
   set "line=!line:checkj_username=#!"  
   for /f "tokens=2 delims=#" %%a in ("!line!") Do (  
     set "number=%%a"  
     set "number=!number:~0,10!"  
     echo !number!
   )
)
Ansonsten ist auch sed dein Freund denn mit Regular Expressions ist das ebenfalls ein Klacks...

oder mit Hilfe der Powershell ebenfalls kein Thema:
Powershell -Executionpolicy Bypass -Command "&{[regex]::match((gc 'd:\test.txt'),'checkj_username(\d{10})').Groups[1].Value}"  

Gruß jodel32
86longrunner
86longrunner 24.02.2015 um 10:52:56 Uhr
Goto Top
Hallo Jodel,

vielen Dank für deine schnelle Lösung klappt perfekt!

VG
Longrunner