Establecer variable como resultado de & # 8220; Buscar & # 8221; en archivo por lotes
-
06-07-2019 - |
Pregunta
Me gustaría establecer una variable basada en el número de líneas en un archivo que contiene una cadena de entrega.
Algo así como:
set isComplete = 0
%isComplete% = find /c /i "Transfer Complete" "C:\ftp.LOG"
IF %isComplete% > 0 ECHO "Success" ELSE ECHO "Failure"
O:
set isComplete = 0
find /c /i "Transfer Complete" "C:\ftp.LOG" | %isComplete%
IF %isComplete% > 0 ECHO "Success" ELSE ECHO "Failure"
Ninguna de esas opciones funciona, obviamente.
Gracias.
Solución
desde la línea de comando
for /f "tokens=3" %f in ('find /c /i "Transfer Complete" "C:\ftp.LOG"') do set isComplete=%f
del script por lotes
for /f "tokens=3" %%f in ('find /c /i "Transfer Complete" "C:\ftp.LOG"') do set isComplete=%%f
Otros consejos
No necesita usar el comando for
; find
establecerá ERRORLEVEL
en uno de estos valores, en función del resultado:
- 0, se encontró al menos una coincidencia.
- 1, no se encontraron coincidencias.
- 2 o más, se produjo un error.
Dado que parece que solo desea ver si la transferencia se completó, y no el recuento total de veces que aparece la cadena, puede hacer algo como esto:
@echo OFF
@find /c /i "Transfer Complete" "C:\test path\ftp.LOG" > NUL
if %ERRORLEVEL% EQU 0 (
@echo Success
) else (
@echo Failure
)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow