Frage von blackeyeni, 40

Gibt es für mein Problem in Batch und dem Befehl findstr eine Lösung?

Meine Batchdatei sieht so aus:

@echo off
set /p a=:
findstr "%a%" test.txt
pause
exit

und die Datei test.txt so:

erster Satz: 1Success
zweiter Satz: 2Success
dritter Satz: 3Success
vierter Satz: 4Success
usw.

(Die Doppelpunkte dürfen auch durch andere Zeichen ersetzt werden)

Ich komme beim ausführen auf:

:erster Satz
erster Satz: 1Success
zweiter Satz: 2Success
dritter Satz: 3Success
vierter Satz: 4Success

Ich möchte aber nur die Linie die den ganzen String, den ich eingegeben habe enthält ausgegeben bekommen. Ausserdem möchte ich auf dieser Linie dann nur alles nach dem Doppelpunkt ausgegeben bekommen.

Auch benutzt werden dürfen die Programmier-/Scriptsprachen Powershell und Wscript.

Für weitere Fragen stehe ich gerne immer zur Verfügung

Vielen dank schon mal im Voraus

elecrtoLP

Antwort
von S1r1us13, 40

Ohne den Parameter /C: sucht FINDSTR nach jedem Wort einzeln. Folgender Befehl löst dein Problem:

FOR /F "tokens=1,* delims=:" %%A IN ('findstr /C:"%a%" test.txt') DO echo %%B

Der Befehl teilt jede einzelne Zeile der Ausgabe des FINDSTR-Befehls in den Teil vor und in den Teil nach dem Doppelpunkt. Der Teil davor entspricht %%A, der Teil danach entspricht %%B.

Kommentar von blackeyeni ,

Hallo,

Vielen Dank! Ich wäre schon fast verzweifelt.

Ich verstehe den Befehl FOR nicht so ganz, deswegen konnte ich mein Problem nicht selbst lösen.

LG

blackeyeni

Kommentar von blackeyeni ,

Noch eine frage: Kann ich mit dem IF Befehl auch abfragen lassen ob ein Satz in in einer Textdatei existiert. Am besten soll das Programm zuerst schauen, ob es den eingegebenen Satz überhaupt vor einem Hashtag in dieser Datei gibt und es dann ausgeben wenn es so ist, falls es jedoch nicht so ist soll es mittels goto zu einem label springen.

LG

blackeyeni

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten