Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Findstr (ab Position x bis Postion y) - Zeile ist zu lang

Frage Entwicklung Batch & Shell

Mitglied: Anyone

Anyone (Level 1) - Jetzt verbinden

26.01.2012 um 08:01 Uhr, 4577 Aufrufe, 4 Kommentare

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.
Mitglied: bastla
26.01.2012 um 08:52 Uhr
Hallo Anyone und willkommen im Forum!
Ist das Problem überhaup per Batchdatei lösbar?
Nicht wirklich - Du kannst zwar Krücken wie
01.
@echo off & setlocal 
02.
set "Datei=D:\Variables.dat" 
03.
set "Suche=name="OSDCOMPUTERNAME"><![CDATA[" 
04.
 
05.
::Fuer die Suche " durch "" ersetzen 
06.
for /f "delims=" %%i in ('find "%Suche:"=""%"^<"%Datei%"') do set "Zeile=%%i" 
07.
::Teilstring bilden, indem der Teil der Zeile vor dem Suchstring entfernt wird 
08.
call set "Teil=%%Zeile:*%Suche%=%%" 
09.
::Zerlegung anhand der Trennzeichen "[" und "]" 
10.
for /f "tokens=5 delims=[]" %%i in ("%Teil%") do set "Var=%%i" 
11.
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
Bitte warten ..
Mitglied: Anyone
26.01.2012 um 10:01 Uhr
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?
Bitte warten ..
Mitglied: bastla
26.01.2012 um 11:57 Uhr
Hallo Anyone!
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:
01.
@echo off & setlocal 
02.
set "Datei=D:\Variables.dat" 
03.
set "SucheVon=name="OSDCOMPUTERNAME"><![CDATA[" 
04.
set "SucheBis=]" 
05.
 
06.
:: Sonderzeichen anpassen 
07.
set "SucheVon=%SucheVon:"=""%" 
08.
set "SucheVon=%SucheVon:[=\[%" 
09.
set "SucheVon=%SucheVon:]=\]%" 
10.
set "SucheBis=%SucheBis:"=""%" 
11.
set "SucheBis=%SucheBis:[=\[%" 
12.
set "SucheBis=%SucheBis:]=\]%" 
13.
set "Suche=%SucheVon%([^%SucheBis%]+)%SucheBis%" 
14.
 
15.
:: VBScript erzeugen 
16.
set S=%temp%\Suche.vbs 
17.
 >%S% echo T=CreateObject("Scripting.FileSystemObject").OpenTextFile("%Datei%").ReadAll 
18.
>>%S% echo Set rE=New RegExp:rE.Pattern="%Suche%":For Each Match In rE.Execute(T):WScript.Echo Match.SubMatches(0):Next 
19.
 
20.
:: Ausgabe VBScript holen 
21.
set "Var=" 
22.
for /f "delims=" %%i in ('cscript //nologo %S%') do set "Var=%%i" 
23.
 
24.
::VBScript loeschen 
25.
del %S% 
26.
 
27.
if not defined Var echo Nicht gefunden! & goto :eof 
28.
echo %Var%
Grüße
bastla
Bitte warten ..
Mitglied: Anyone
26.01.2012 um 12:59 Uhr
Hallo bastla,

super gemacht, vielen Dank!

Saubere Sache.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Bat soll in einer .dll eine Zeile suchen und Diese + 2 darunterliegende anzeigen (10)

Frage von Gangster137910 zum Thema Batch & Shell ...

VB for Applications
gelöst VbScript: ADODB.Stream: Neue Zeile einfügen (2)

Frage von BirdyB zum Thema VB for Applications ...

Batch & Shell
gelöst Per Batch in ausgewählte oder vorgeschriebene Zeile einer .txt schreiben (6)

Frage von pdiddo zum Thema Batch & Shell ...

Neue Wissensbeiträge
Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(29)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Humor (lol)

Bester Vorschlag eines Supporttechnikers ever: APC

(15)

Erfahrungsbericht von DerWoWusste zum Thema Humor (lol) ...

Windows Server

Exchange 2010 Active Directory und Windows Server 2016

(4)

Erfahrungsbericht von Herbrich19 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Internet
gelöst Mitarbeiter surft auf unerwünschter Seite - Wie damit umgehen? (44)

Frage von sabines zum Thema Internet ...

Netzwerke
Wie erstelle ich ein Intranet (19)

Frage von Leonardnet zum Thema Netzwerke ...

LAN, WAN, Wireless
gelöst Eintägige Netzwerkunterbrechung trotz Backupleitung (15)

Frage von iAmbricksta zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2012 R2 - Zugriff Verweigert bei jeglicher Tätigkeit (13)

Frage von DarkLevi zum Thema Windows Server ...