Variable auf Ergebnis „Suche“ in Batch-Datei
-
06-07-2019 - |
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.
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