Findstr (ab Position x bis Postion y) - Zeile ist zu lang
Hallo zusammen,
ich suche in einer Datei VARIABLES.DAT die mehrere Zeilen enthält. Die zweite Zeile ist ganze 5200 Zeichen lang!
Nun möchte ich gerne in dieser Datei ab einem definiertem Startpunkt
name="OSDCOMPUTERNAME"><![CDATA[
den darauffolgenden String in eine Variable einlesen und mit dem Zeichen
]
soll diese Variable enden (ohne ]). Leider liefert mir findstr beim Suchen nur den Fehler "Zeile 2 ist zu lang".
Das ganze sollte als Batch laufen. Ist das Problem überhaup per Batchdatei lösbar?
Danke schon mal im Vorraus.
ich suche in einer Datei VARIABLES.DAT die mehrere Zeilen enthält. Die zweite Zeile ist ganze 5200 Zeichen lang!
Nun möchte ich gerne in dieser Datei ab einem definiertem Startpunkt
name="OSDCOMPUTERNAME"><![CDATA[
den darauffolgenden String in eine Variable einlesen und mit dem Zeichen
]
soll diese Variable enden (ohne ]). Leider liefert mir findstr beim Suchen nur den Fehler "Zeile 2 ist zu lang".
Das ganze sollte als Batch laufen. Ist das Problem überhaup per Batchdatei lösbar?
Danke schon mal im Vorraus.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 179570
Url: https://administrator.de/forum/findstr-ab-position-x-bis-postion-y-zeile-ist-zu-lang-179570.html
Ausgedruckt am: 19.05.2025 um 14:05 Uhr
4 Kommentare
Neuester Kommentar
Hallo Anyone und willkommen im Forum!
versuchen, aber nicht zuletzt wegen der Anführungszeichen wird das vermutlich eine ziemlich wackelige Angelegenheit ...
Ich würde auf jeden Fall VBS bevorzugen.
Grüße
bastla
Ist das Problem überhaup per Batchdatei lösbar?
Nicht wirklich - Du kannst zwar Krücken wie@echo off & setlocal
set "Datei=D:\Variables.dat"
set "Suche=name="OSDCOMPUTERNAME"><![CDATA["
::Fuer die Suche " durch "" ersetzen
for /f "delims=" %%i in ('find "%Suche:"=""%"^<"%Datei%"') do set "Zeile=%%i"
::Teilstring bilden, indem der Teil der Zeile vor dem Suchstring entfernt wird
call set "Teil=%%Zeile:*%Suche%=%%"
::Zerlegung anhand der Trennzeichen "[" und "]"
for /f "tokens=5 delims=" %%i in ("%Teil%") do set "Var=%%i"
echo %Var%
Ich würde auf jeden Fall VBS bevorzugen.
Grüße
bastla
Hallo Anyone!

VBS lässt sich in Batch einbetten (bzw gezielt aus dem Batch heraus erstellen) - ein solcher Batch könnte etwa so aussehen:
Grüße
bastla
Kommt nix bei raus.
Meine Überraschung hält sich in Grenzen ... VBS lässt sich in Batch einbetten (bzw gezielt aus dem Batch heraus erstellen) - ein solcher Batch könnte etwa so aussehen:
@echo off & setlocal
set "Datei=D:\Variables.dat"
set "SucheVon=name="OSDCOMPUTERNAME"><![CDATA["
set "SucheBis=]"
:: Sonderzeichen anpassen
set "SucheVon=%SucheVon:"=""%"
set "SucheVon=%SucheVon:[=\[%"
set "SucheVon=%SucheVon:]=\]%"
set "SucheBis=%SucheBis:"=""%"
set "SucheBis=%SucheBis:[=\[%"
set "SucheBis=%SucheBis:]=\]%"
set "Suche=%SucheVon%([^%SucheBis%]+)%SucheBis%"
:: VBScript erzeugen
set S=%temp%\Suche.vbs
>%S% echo T=CreateObject("Scripting.FileSystemObject").OpenTextFile("%Datei%").ReadAll
>>%S% echo Set rE=New RegExp:rE.Pattern="%Suche%":For Each Match In rE.Execute(T):WScript.Echo Match.SubMatches(0):Next
:: Ausgabe VBScript holen
set "Var="
for /f "delims=" %%i in ('cscript //nologo %S%') do set "Var=%%i"
::VBScript loeschen
del %S%
if not defined Var echo Nicht gefunden! & goto :eof
echo %Var%
bastla