Establecer variable como resultado de & # 8220; Buscar & # 8221; en archivo por lotes

StackOverflow https://stackoverflow.com/questions/831122

  •  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.

¿Fue útil?

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
scroll top