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]‚IYuoafgfg-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
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]‚IYuoafgfg-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
Please also mark the comments that contributed to the solution of the article
Content-Key: 264352
Url: https://administrator.de/contentid/264352
Printed on: April 19, 2024 at 23:04 o'clock
2 Comments
Latest comment
Moin,
z.B. so
Ansonsten ist auch sed dein Freund denn mit Regular Expressions ist das ebenfalls ein Klacks...
oder mit Hilfe der Powershell ebenfalls kein Thema:
Gruß jodel32
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!
)
)
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