2012-11-20 12 views
10

Ich habe eine Textdatei im selben Ordner wie meine Batchdatei.
Wie überprüft man, ob Textdateien bestimmten Text im Stapel enthalten?

Ich möchte meine Batch-Datei Inhalt der Textdatei lesen und je nach Inhalt dieser Textdatei möchte ich es Aktion ausführen.

Beispiel, wenn die Textdatei "Hello World" enthält, dann starte VLC wenn es keine Hello World enthält, dann tu etwas anderes.

Text wird von selbst aktualisiert.

Hier ist mein Batch-Code bisher, es kann den Text aus der Textdatei auf dem Bildschirm ausgeben.

@echo off 
for /f "tokens=*" %%a in (log.txt) do call :processline %%a 

pause 
goto :eof 

:processline 
echo line=%* 

goto :eof 

:eof 
+0

Ich denke [diese Frage] (http://stackoverflow.com/questions/106053/how-can-i-make-a-batch-file-to-act-like-a-simple-grep-using-use- perl) hat was du suchst – zbrunson

Antwort

24

Sie sollten entweder FIND oder FINDSTR verwenden. Geben Sie HELP FIND und HELP FINDSTR von einer Eingabeaufforderung ein, um Dokumentation zu erhalten. FIND ist sehr einfach und zuverlässig. FINDSTR ist viel stärker, aber auch temperamentvoll. Weitere Informationen finden Sie unter What are the undocumented features and limitations of the Windows FINDSTR command?.

Sie kümmern sich nicht um die Ausgabe eines der beiden Befehle, daher können Sie die Ausgabe auf Null umleiten.

Beide Befehle setzen ERRORLEVEL auf 0, wenn die Zeichenfolge gefunden wird, und 1, wenn die Zeichenfolge nicht gefunden wird. Sie können die Operatoren && und || verwenden, um Code abhängig davon, ob die Zeichenfolge gefunden wurde, bedingt auszuführen.

Sie könnten ERRORLEVEL auch in einer IF-Anweisung testen, aber ich bevorzuge die obige Syntax.

+0

vergiss es @echo off :) Danke viel. – Mowgli

+0

Hallo, ich habe Frage hoffe, Sie können mir helfen, anstatt log.txt, gibt es eine Möglichkeit, URL zu setzen, es wird nur einen Link von Daten haben. Danke – Mowgli

+0

Scheint nicht für mich zu arbeiten. (Hallo Welt wird nie gefunden) – Cestarian

Verwandte Themen