2011-04-11 25 views
11

Estoy tratando de crear un proceso por lotes (.bat) para Windows XP para hacer lo siguiente:¿Cómo encontrar si un archivo contiene una cadena dada usando la línea de comandos de Windows

If (file.txt contains the string 'searchString') then (ECHO found it!) 
ELSE(ECHO not found) 

Hasta ahora, he encontrado una forma de buscar cadenas dentro de un archivo usando el comando FIND que devuelve la línea en el archivo donde encuentra la cadena, pero no puedo hacer una verificación condicional sobre ella.

Por ejemplo, esto no funciona.

IF FIND "searchString" file.txt ECHO found it! 

Tampoco esto:

IF FIND "searchString" file.txt=='' ECHO not found 

alguna idea sobre cómo se puede hacer esto?

Respuesta

6

Mira esto post.
La solución aceptada parece ser la adecuada para usted también.

+0

¡increíble! ¡Gracias! Funciona perfectamente. – Jai

4

De otro mensaje:

find /c "string" file 
    if %errorlevel% equ 1 goto notfound 
    echo found 
    goto done 
    :notfound 
    echo notfound 
    goto done 
    :done 

O algo así: si no se encuentra escribir en el archivo.

find /c "%%P" file.txt || (echo %%P >> newfile.txt) 

O algo así: si se encuentra escribir en el archivo.

find /c "%%P" file.txt && (echo %%P >> newfile.txt) 

O algo como:

find /c "%%P" file.txt && (echo found) || (echo not found) 
+2

use: "> nul 2> & 1" para suprimir la salida "find/c" %% P "file.txt> nul 2> & 1 ... .. –

2

He utilizado una línea de comandosDOS para hacer esto. Dos líneas, en realidad. El primero en hacer que el "directorio actual" sea la carpeta donde está el archivo, o la carpeta raíz de un grupo de carpetas donde puede estar el archivo. La segunda línea hace la búsqueda.

CD C:\TheFolder 
C:\TheFolder>FINDSTR /L /S /I /N /C:"TheString" *.PRG 

Puede encontrar detalles acerca de los parámetros en this link.

Espero que ayude!

Cuestiones relacionadas