poopie
Goto Top

Wort aus Datei herausfiltern von Zeichen x bis y

Hallo,
ich würde gerne ein Wort aus einer Textdatei herausfiltern und als Variable weiter benutzen.
Die datei enthälter unter anderen folgendes
<option selected="selected">MEIN TEXT</option>
Und MEIN TEXT würde ich gerne weiterbenutzen.

Meine Frage ist ob das machbar ist und wenn ja, wie?

Vielen Dank für's lesen. und evtl. antworten

Content-Key: 115704

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

Ausgedruckt am: 28.03.2024 um 10:03 Uhr

Mitglied: MKzero
MKzero 11.05.2009 um 10:01:17 Uhr
Goto Top
Mhh.. mit nem batch? Glaube ich eher nicht...
Mitglied: poopie
poopie 11.05.2009 um 10:28:11 Uhr
Goto Top
Wenn es mit Batch nicht geht, würde ich mich auch mit Perl zufrieden stellen lassen.
Das heißt dann wohl das hier kann zugemacht werden und ich schreib den Beitrag nochmal im Perl Bereich.
Mitglied: miniversum
miniversum 11.05.2009 um 13:38:23 Uhr
Goto Top
Klar geht das mit Batch:
FOR /F "tokens=2 delims=<>" %%i in ('findstr /B /R "<option selected="selected">" "C:\Datei.txt"') do set "text=%%i"  
echo %text%
Mitglied: poopie
poopie 15.05.2009 um 12:55:30 Uhr
Goto Top
Also ich hab das nun getested und muss leider sagen das es nicht funktioniert.
So wird leider kein Text ausgegeben.
Mitglied: miniversum
miniversum 15.05.2009 um 16:25:58 Uhr
Goto Top
Ich habs grade bei mri ausprobiert udn hier funktioniert es
Ich habe allerdings eine datei genommen die nur diese eine zeile enthällt.
Du kannst es ja schrittweise mal direkt in der cmd testen.
Findet er die richtige Zeile wenn du das eingibst:
findstr /B /R "<option selected="selected">" "C:\Datei.txt"
Was kommt dort als Ergebnis raus?
Den Dateinamen und Pfad musst du natürlich anpassen.
Mitglied: 78632
78632 15.05.2009 um 17:25:17 Uhr
Goto Top
Versuch's mal so:

@echo off 
FOR /F "tokens=3 delims=>=<" %%i in ('findstr /B /R "<option selected="selected">" "C:\Datei.txt"') do set "text=%%i"   
pause
Mitglied: Biber
Biber 15.05.2009 um 18:09:54 Uhr
Goto Top
Moin miniversum und blablanick (willkommen im Forum),

quält Euch doch nicht rum mit sinnlosem Rumgerate.

Solange nicht bekannt ist, wie die zu lesende Datei aussieht geht Dein Ansatz, blablanick, beispielsweise in diesem Fall in die Grütze:
<html>
<head><!-- PageID 3 - published by RedDot 7.5 - 7.5.1.31 - 22877 -->
<title>
....
... und miniversums Findstr fasst ins Leere, wenn die HTML/XML-Datei keine CRLFs enthält oder der gesuchte Tag nicht als eigene Zeile separiert ist.

Lasst doch den Thread-Copy&Paster noch 2 oder 3 Doppelpostings mehr machen, vielleicht kommt er ja mal von allein auf den Bolzen, ein paar Infos mehr zu geben.
Oder gar einen aussagefähigen Ausschnitt der Quelldatei.

BTW ungeklärte Fragen des IT-Alltags:
WTHF kann denn der Grund sein, weshalb ich außerhalb einer Applikation, die mit Tags umgehen kann wissen wollen mag, welche Option "selected" ist????
Wer außer der Appz, die das geschrieben hat und auch sicherlich lesen kann will das denn wozu auslesen??

Es geht mich ja nix an, was da zusammengeschrotet werden soll, aber kaufen würde ich es eher nicht.

Grüße
Biber
Mitglied: 78632
78632 15.05.2009 um 19:02:30 Uhr
Goto Top
Zitat von @Biber:

Solange nicht bekannt ist, wie die zu lesende Datei aussieht geht
Dein Ansatz, blablanick, beispielsweise in diesem Fall in die
Grütze:

Ach was, ich bin da flexibel. face-smile

@echo off 
For /F "tokens=5 delims=>=< " %%i in ('findstr /R "<option selected="selected">" "C:\Datei.txt"') do set "text=%%i"  

echo %text%
pause

Wenn "MEIN TEXT" dann tatsächlich aus 2 Worten bestehen sollte, nimmt man halt
 for /F "tokens=5,6 delims=>=< " %%i in ('findstr /R "<option selected="selected">" "C:\Datei.txt"') do set "text=%%i %%j"  

Aus der Fragestellung
Und MEIN TEXT würde ich gerne weiterbenutzen.
und dem zuvor für findstr verwendete Parameter /B geht doch imo einwandfrei hervor, was der Fragesteller möchte, also lässt sich die Frage erst einmal zutreffend beantworten.

:-P
Mitglied: bastla
bastla 19.05.2009 um 00:37:21 Uhr
Goto Top
@78632
... und dem zuvor für findstr verwendete Parameter /B geht doch imo einwandfrei hervor, was der Fragesteller möchte
Wenn der Fragesteller "findstr /B" verwendet hätte ... face-wink
Ev noch etwas flexibler (wenn auch nur mehr mit Batch-"Hülle"), aber immer noch von der (noch fehlenden) Beschreibung des Inhaltes von "MEIN TEXT" (Stichwort "Sonderzeichen") abhängig:
@echo off & setlocal
set "Datei=D:\Die Datei.xml"  
set Suche="<option selected=""selected"">(.+)</option>"  

set G=%temp%\GetValue.vbs
>%G%  echo T=CreateObject("Scripting.FileSystemObject").OpenTextFile("%Datei%").ReadAll  
>>%G% echo Set rE=New RegExp:rE.Global=True:rE.IgnoreCase=True:rE.Pattern=%Suche%
>>%G% echo For Each M In rE.Execute(T):WScript.Echo M.SubMatches(0):Next

for /f "delims=" %%i in ('cscript //nologo %G%') do call :ProcessValue "%%i"  
goto :eof

:ProcessValue
echo Gefunden: %1
goto :eof
Grüße
bastla