He encontrado varias soluciones a este problema, pero desafortunadamente ninguna de ellas parece funcionar en mi ventana de Windows.
Estoy ejecutando un FOR
bucle en un archivo por lotes para recorrer varios archivos de texto. Para cada archivo de texto, quiero ECHO
su nombre (y posiblemente redirigir la salida al archivo) si un grep
(de WinGNU) devuelve una línea. Una búsqueda rápida en Google me muestra que lo haga de esta manera:
IF grep -c pattern file ( stuff )
Sin embargo, esto arroja un error
-c was unexpected at this time.
Alternativamente, pensé que podría usar el código de salida de esta grep --quiet
manera:
grep -q pattern file
IF ERRORLEVEL 1 ( stuff )
Esto siempre falla la prueba IF, incluso cuando el grep tiene éxito.
¿Hay una buena manera de ejecutar una declaración condicional en Windows si mi grep encuentra una coincidencia?
Mi código es:
SET locations=( a, long, list, of, last, two, octets )
SETLOCAL ENABLEDELAYEDEXPANSION
FOR %%r IN %locations% DO (
grep -i "^\[CardSwipe\]" \\10.0.%%r\path\to\file.ini
IF ERRORLEVEL 1 echo %%r
Mi salida es:
[this line left intentionally blank] :)
grep
por mí? En particular, ¿qué tipo de cadenas estás tratando de combinar?
[CardSwipe]
mayúscula y minúscula literal . Estoy escaneando un conjunto de ini
archivos que deberían haber [CardSwipe]
comentado, así que necesito saber si alguno de ellos todavía comienza [CardSwipe]
(en lugar de estar oculto detrás del rem, por ejemplo;[CardSwipe]