2016-04-06 3 views
0

Ich versuche, eine Batch-Datei zu erstellen, um nach einer Zeichenfolge in Dateien zu suchen, die mit einem Dienst beginnen und aus den letzten 24 Stunden stammen.Suche nach einer Zeichenfolge nur in Dateien, die weniger als einen Tag alt sind

Ich bin in der Lage, es für die Suche nach der Zeichenfolge in allen Dateien beginnend mit dem Dienst im Ordner zu bekommen, aber ich kann nicht nur nach Dateien suchen, die mit Service aus den letzten 24 Stunden beginnen. Ich habe versucht forfiles und zusammen zu finden, aber sie haben nicht funktioniert.

find "text to search for" ...\Logs\service* -mtime -1 
if %errorlevel% equ 1 goto fail 
goto pass 

:pass 
do stuff 
goto end 

:fail 
do stuff 

:end 
PAUSE 
+0

Sieht aus wie Sie versuchen, Linux 'find'-Parameter auf die Verwendung Winodws, es wird nicht funktionieren. Wäre es einfacher, wenn Sie zu PowerShell wechseln könnten, ist das eine Option? – TessellatingHeckler

+0

Ihr Beispielcode enthält keine 'forfiles', obwohl Sie es erwähnt haben ... Wie auch immer, ich denke, es ist die falsche Wahl, da die'/D'-Option mit einer positiven ('+') Zahl wie '/ D + 1' bedeutet aktuelles Datum plus eins, damit es nur mit Dateien übereinstimmt, die in der Zukunft geändert wurden (frag mich nicht, was die Entwickler bei der Programmierung dieses Tools gedacht haben); Daher ist es am besten, nicht reines Batch-Scripting zu verwenden, da die Datumsarithmetik dort sehr schmerzhaft ist. vielleicht * PowerShell *, * JavaScript * oder * VBScript * waren geeignete Alternativen (oder auch Chargenhybride) ... – aschipfl

Antwort

0

Ich glaube, Sie die Dateien finden müssen zuerst dann für Ihren Text grep

Etwas wie:

find ...\Logs\ -name service* -mtime -1 -exec grep 'text to search for' {} \; 
+0

Es heißt "Datei nicht gefunden - Service *", ich habe eine Dummy-Datei mit zufälligem Text erstellt, um es zu testen und es tut nicht fangen – user3081455

+0

Ich erstelle Ereignisse unter den Pass-und Fail-Sektionen. seine seltsame Ursache, dann sagt die Eingabeaufforderung Erfolg und schafft ein vorübergehendes Ereignis. Im Moment habe ich eine Datei, die passieren sollte, und eine Datei, die vom letzten Tag fehlschlagen sollte – user3081455

+0

Vielleicht versuchen Sie den absoluten Pfad zu Ihrem Verzeichnis anstelle von relativen ... Ich testete diese find/data1/log/cassandra/-name System * -mtime -1 -exec grep 'FEHLER \ [' {} \; auf meinem System und es gab die richtigen Ergebnisse zurück ... – stevicus

Verwandte Themen