2009-04-28 2 views
1

Ich habe viele Protokolldateien, die Suche nach bestimmten Zeichenfolgen und fragte mich, ob ich eine Batch-Datei erstellen könnte, um diesen Job für mich zu automatisieren? Alles, was ich tun muss, ist, das neueste Protokoll in einem bestimmten Verzeichnis zu suchen und dann nach der Zeichenfolge in dieser Datei zu suchen.Batch-Datei für die Suche nach String in der neuesten Datei

Ich habe den folgenden Code auf dieser Website gefunden, der großartig funktioniert, um die neueste Protokolldatei zu öffnen, aber leider weiß ich nicht genug über Stapelprogrammierung, um den Code zu ändern, um nach der Zeichenfolge zu suchen und die Zeile anzuzeigen.

for /f "usebackq delims=" %%i in (`dir /b /o-d`) do @call "%%i"&goto :eof 

Jede Hilfe sehr geschätzt würde.

Antwort

7

hinzufügen findstr bis zum Ende:

or /f "usebackq delims=" %%i in (`dir /b /o-d`) do findstr searchforthisstring %%i 

Was dies für "searchforthisstring" sucht tut die gefundenen Dateien von

dir /b/o-d 

Welche Listendateien (/ b = einfach Namen nicht und andere Informationen/od Reverse chronologischer Reihenfolge

2

zuerst Satz, der die Datei, die Sie wollen. Wenn /od nicht funktioniert, versuchen /o-d ...

for /f %%i in ('dir \path\to\files\ /b /od') do set myfile=%%i

... und achten weil myfile ohne Weg kommen wird.

Dann for /f "tokens=*" verwenden, um jede Zeile der Datei vollständig zu lesen, und findstr für Ihre STRING zu suchen ...

for /f "tokens=*" %%i in (\path\to\files\%myfile%) do (echo %%i | findstr STRING >> OUTPUTFILE)

Wenn Sie OUTPUTFILE überschrieben sein wollen jedes Mal wenn Sie den Code ausführen, ein verwenden single >.

Wenn Sie keine Datei möchten, aber die Ausgabe auf dem Bildschirm sehen, löschen Sie einfach den >> OUTPUTFILE Code.