anyone

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.
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

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

bastla
bastla 26.01.2012 um 08:52:23 Uhr
Goto Top
Hallo Anyone und willkommen im Forum!
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%
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
Anyone
Anyone 26.01.2012 um 10:01:51 Uhr
Goto Top
Hallo bastla,

die Lösung scheint nicht zu funktionieren. Kommt nix bei raus.

An VBScript habe ich auch schon gedacht, habe jedoch keinerlei Erfahrung mit der Suche. Ein Schritt (bei Batch) wäre auch erstmal einen sauberen Zeilenumbruch in die lange Zeile zu bringen.
Jeder Bereich dieser Zeile ist mit <var name=...</var> maskiert

Beispiel:
<var name=...</var><var name="OSDCOMPUTERNAME"><![CDATA[DAS_WILL_ICH_SUCHEN]]></var><var name=...</var>

, alles nur halt hintereinander.

Wie sollte ich mit VBScript das ganze angehen?
bastla
bastla 26.01.2012 um 11:57:54 Uhr
Goto Top
Hallo Anyone!
Kommt nix bei raus.
Meine Überraschung hält sich in Grenzen ... face-wink
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%
Grüße
bastla
Anyone
Anyone 26.01.2012 um 12:59:08 Uhr
Goto Top
Hallo bastla,

super gemacht, vielen Dank!

Saubere Sache.