2017-11-16 1 views
0

Ich bin auf der Suche, ob ein Ausgabe-Log mit einer gewünschten Zeichenfolge endet, und rufen Sie einen anderen Stapel, wenn dies der Fall ist.Zeichenkette in Datei mit Batch suchen und anderen Batch aufrufen

Ich habe bereits einige Lösungen bei StackOverflow versucht, aber es funktioniert immer noch nicht.

title Validate daily execution 


findstr /C: "Exiting with code 0" .\logs\20171116.log 
if %errorlevel%==0 (
BBBB 
CALL AutoLogEmail 
) else (
AAAAAAAa 

) 

Und die Datei, die ich in einem Unterverzeichnis suchen, mit dem Namen über die Werte

16-11-2017 6: 50: 00,75 START PROCESS XXXXXXX.ISPAC Microsoft (R) SQL Server ausführen Paket-Dienstprogramm Version 11.0.2100.60 für 64-Bit Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.

Gestartet: 06:50:00 DTExec: Die Paketausführung wurde zurückgegeben DTSER_SUCCESS (0). Beginn: 06.50.00 Abschluss: 06.52.03 Abgelaufene: 122,929 Sekunden 16-11-2017 6: 52: 04,00 END PROCESS XXXXXXXX.ISPAC: mit Code Beenden 0

Gibt es eine eine bestimmte Funktion, die ich benutzen soll? Kann mir jemand den Fehler zeigen und erklären, warum es nicht funktioniert?

Vielen Dank im Voraus Helder

Antwort

0

Die Speicherplatz zwischen /c: und die Zeichenfolge in Ihrem findstr Befehl ist Ihr Problem.

Mit diesem Raum an der Stelle angegeben, wird findstr eine Syntax-Fehlermeldung generieren und zu setzen errorlevel2.

Entfernen Sie es und findstr wird versuchen, die Zeichenfolge in der Datei zu finden.

0

Sie so etwas wie dies versuchen könnte:

@echo off 
title Validate daily execution 

>nul find "Exiting with code 0" .\logs\20171116.log && (
    CALL AutoLogEmail 
) || (
    echo not found 
    pause 
) 

In diesem Fall ist es auf dem Befehl find abhängt, die die & & Betreiber verursachen whill (die die einzige ausführt Befehl danach, wenn der vorherige nicht fehlschlägt), entweder Autologmail aufzurufen, oder Echo nicht gefunden, wenn es nichts gefunden hat.