86longrunner
Goto Top

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

Content-Key: 264352

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

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

Mitglied: 114757
Solution 114757 Feb 24, 2015 updated at 10:18:01 (UTC)
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
Member: 86longrunner
86longrunner Feb 24, 2015 at 09:52:56 (UTC)
Goto Top
Hallo Jodel,

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

VG
Longrunner