
92943
13.05.2011
Bestimmte Wörter in einer Textdatei per Batch suchen
Guten Morgen,
ich habe eine Batch mit der ich in einer
bestimmten Textdatei in einer
bestimmten Zeile eine
bestimmte Zahl auslesen und in eine Variable speichern möchte.
Der Text der Zeile ist immer der gleiche nur die Zahl am Ende ändert sich.
In dem Text können auch Sonderzeichen oder Zahlen vorkommen.
Ein Beispiel:
Text & 087u90
Text
08ß0
Bestimmter Text=0
Text 353425
Ich dachte mir, dass man dies vielleicht mit folgendem realisieren könne:
find /n "Bestimmter Text=" %Textdatei%
Denn der Text vor der Zahl wird immer der gleiche sein.
Nun muss ich aber irgendwie sagen können, dass nur die Zahl der Zeile (die auch immer am Ende der Zeile steht) in eine Variable gespeichert werden soll.
Würde es auch gehen, dass die Batchdatei die Textdatei von oben beginnend durchsucht und sobald sie die passende Zeile gefunden hat, dort stoppt und diese Zeile nimmt, da diese bestimmte Zeile immer wieder in die Textdatei reingeschrieben wird, aber nur die aktuellste angeschaut werden soll.
Ich habe erst vor kurzem begonnen Batchdateien zu schreiben, daher bin ich noch nicht sehr bewandert in diesem Thema.
Schonmal vielen Dank im vorraus
ich habe eine Batch mit der ich in einer
bestimmten Textdatei in einer
bestimmten Zeile eine
bestimmte Zahl auslesen und in eine Variable speichern möchte.
Der Text der Zeile ist immer der gleiche nur die Zahl am Ende ändert sich.
In dem Text können auch Sonderzeichen oder Zahlen vorkommen.
Ein Beispiel:
Text & 087u90
Text
08ß0
Bestimmter Text=0
Text 353425
Ich dachte mir, dass man dies vielleicht mit folgendem realisieren könne:
find /n "Bestimmter Text=" %Textdatei%
Denn der Text vor der Zahl wird immer der gleiche sein.
Nun muss ich aber irgendwie sagen können, dass nur die Zahl der Zeile (die auch immer am Ende der Zeile steht) in eine Variable gespeichert werden soll.
Würde es auch gehen, dass die Batchdatei die Textdatei von oben beginnend durchsucht und sobald sie die passende Zeile gefunden hat, dort stoppt und diese Zeile nimmt, da diese bestimmte Zeile immer wieder in die Textdatei reingeschrieben wird, aber nur die aktuellste angeschaut werden soll.
Ich habe erst vor kurzem begonnen Batchdateien zu schreiben, daher bin ich noch nicht sehr bewandert in diesem Thema.
Schonmal vielen Dank im vorraus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 166202
Url: https://administrator.de/forum/bestimmte-woerter-in-einer-textdatei-per-batch-suchen-166202.html
Ausgedruckt am: 23.04.2025 um 19:04 Uhr
8 Kommentare
Neuester Kommentar
Aloha,
da heute wolkig ist, komme ich auch mal düster und sage dir: Die Suchfunktion ist dein Freund (aber sowas von), denn genau dieses Thema mit genau diesem Problem (wo auch nur 1x der Fund ausgeben werden soll) gab es hier schon mehrfach ...
und das Rad dreht sich und dreht sich und ...
greetz André
P.S.: Solltest du bei der Suche dann etwas gefunden haben und damit dann nicht klarkommen, helfen wir gerne - aber immer wieder alles neu durchkauen (oder dann die Arbeit des Nutzers machen und selbst zu suchen) ist nicht so prickelnd.
da heute wolkig ist, komme ich auch mal düster und sage dir: Die Suchfunktion ist dein Freund (aber sowas von), denn genau dieses Thema mit genau diesem Problem (wo auch nur 1x der Fund ausgeben werden soll) gab es hier schon mehrfach ...
und das Rad dreht sich und dreht sich und ...
greetz André
P.S.: Solltest du bei der Suche dann etwas gefunden haben und damit dann nicht klarkommen, helfen wir gerne - aber immer wieder alles neu durchkauen (oder dann die Arbeit des Nutzers machen und selbst zu suchen) ist nicht so prickelnd.
Zitat von @92943:
kannst du mir eben den Link dazu geben?
kannst du mir eben den Link dazu geben?
Aloha,
greetz André
edit: wobei, viel zu aufwändig, geht doch noch einfacher
@echo off & setlocal
set "Textdatei=E:\Test\liste.txt"
for /f "tokens=2 delims==" %%s in ('findstr /c:"Bestimmter Text=" "%Textdatei%" ^|findstr /n "^" ^|findstr "1:"') do set "Treffer=%%s"
echo %Treffer%
pause
goto :eof
P.S.:
dass nur die Zahl der Zeile
Schön formuliert, ich hoffe du willst jetzt doch nicht noch die wirklich Zahl der Zeile (also sprich, Zeile 4 in diesem Beispiel) oder doch?Noch etwas: Da der Text feststeht, wäre es good to know, ob dort sich ein Istgleichzeichen befindet ^_^ (da müsste dann natürlich eine Anpassung des Token vorgenommen werden)
P.P.S.: die effizientere Schleife kannst du unten bei bastla sehen
@Skyemugen
In solchen Fällen verwende ich eher "
- und zur Sicherheit ein
vorweg - dann kannst Du mit einem weiteren "
Grüße
bastla
In solchen Fällen verwende ich eher "
if defined
":for /f "tokens=2 delims==" %%s in ('findstr /i /c:"Bestimmter Text=" "%Textdatei%"') do if not defined Treffer set "Treffer=%%s"
set "Treffer="
if defined
" prüfen, ober überhaupt etwas gefunden wurde ...Grüße
bastla
Hallo fyrb38!
Anhand des Trennzeichens "=" kannst Du "wie" nicht isolieren - mit dem Leerzeichen geht es, und da dieses (zusammen mit TAB) Default ist, muss es noch nicht mal angegeben werden ...
gar nicht vorhanden / "
Um sicher zu sein, dass überhaupt etwas gefunden wurde, kann dann nach der Schleife mit
oder mit
geprüft und weiter verarbeitet (oder auch nicht
) werden ...
Grüße
bastla
Und um "wie" zu bekommen schreibe ich: "tokens=3 delims= "?
Als Demo an der Kommandozeile:for /f "tokens=3" %i in ("Hallo Herr=Mustermann, wie geht=es Ihnen.") do @echo %i
Ich rate also jetzt nur. Heißt es sowas wie, wenn Treffer nicht schon woanders verwendet wird, dann speicher die Zahl unter Treffer?
Im Prinzip richtig - Zweck der Aktion ist es, nur bei ersten Schleifendurchlauf einen Wert in die Variable (die zu diesem Zeitpunkt wegen des vorhergehendenset "Treffer="
defined
" ist), zu schreiben (ansonsten würde nach der Schleife der letzte gefunden Wert in der Variablen stehen).Um sicher zu sein, dass überhaupt etwas gefunden wurde, kann dann nach der Schleife mit
if defined Treffer (
echo Treffer gefunden
echo Verarbeite %Treffer% ...
echo Fertig
)
if defined not Treffer echo Kein Treffer gefunden - Batch wird beendet & goto :eof
Grüße
bastla