Frage

Ich mag eine Variable basierend auf der Anzahl der Zeilen in einer Datei, die ein Geben String enthalten.

So etwas wie:

set isComplete = 0
%isComplete% = find /c /i "Transfer Complete" "C:\ftp.LOG"
IF %isComplete% > 0 ECHO "Success" ELSE ECHO "Failure"

Oder:

set isComplete = 0
find /c /i "Transfer Complete" "C:\ftp.LOG" | %isComplete%
IF %isComplete% > 0 ECHO "Success" ELSE ECHO "Failure"

Keine dieser Optionen funktionieren, natürlich.

Danke.

War es hilfreich?

Lösung

von der Befehlszeile

for /f "tokens=3" %f in ('find /c /i "Transfer Complete" "C:\ftp.LOG"') do set isComplete=%f 

aus der Batch-Skript

for /f "tokens=3" %%f in ('find /c /i "Transfer Complete" "C:\ftp.LOG"') do set isComplete=%%f 

Andere Tipps

Sie brauchen nicht den for Befehl zu verwenden; find die ERRORLEVEL auf einen dieser Werte, basierend auf dem Ergebnis:

  • 0 Mindestens eine Übereinstimmung gefunden wurde.
  • 1 wurden keine Übereinstimmungen gefunden.
  • 2 oder mehr, ist ein Fehler aufgetreten.

Da es sieht aus wie Sie nur, wenn die Übertragung abgeschlossen wollen sehen, und nicht die Gesamtzahl der mal die Zeichenfolge erscheint, können Sie etwas tun:

@echo OFF

@find /c /i "Transfer Complete" "C:\test path\ftp.LOG" > NUL
if %ERRORLEVEL% EQU 0 (
    @echo Success
) else (
    @echo Failure
)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top