batch-file
Buscar cadenas en lote
Buscar..
Búsqueda de cadenas básicas
El comando FIND puede escanear archivos grandes línea por línea para encontrar una cadena determinada. No admite comodines en la cadena de búsqueda.
find /i "Completed" "%userprofile%\Downloads\*.log" >> %targetdir%\tested.log
TYPE scan2.txt | FIND "Failed" /c && echo Scan failed || echo Scan Succeeded
El comando FINDSTR tiene un mayor alcance de funciones y admite la búsqueda de expresiones regulares (REGEX) con caracteres comodín en la cadena de búsqueda.
FINDSTR /L /C:"Completed" Results.txt
echo %%G | findstr /r /b /c:"[ ]*staff.*" >nul && echo Found!
Consulte las fuentes de ayuda de FIND y FINDSTR para obtener más información.
Usando los resultados de búsqueda
La siguiente secuencia de comandos muestra una técnica de archivos divididos más avanzada, donde la función FOR recorre una lista de archivos en un directorio, y cada contenido de archivo se canaliza a FINDSTR que busca una cadena que contiene la subcadena var
precedida por un número indefinido de espacios y reemplazada por cualquier extra texto. Una vez encontrado, el archivo buscado se reemplaza por uno nuevo que contiene solo la parte de texto sobre la cadena de búsqueda.
@echo off
setlocal enabledelayedexpansion
pushd "%temp%\Test"
for %%G in ("*.txt") do (set "break="
(for /f "tokens=*" %%H in (%%~G) do (
if not defined break (
echo %%H | findstr /r /b /c:"[ ]*var.*" >nul && set break=TRUE || echo %%H )
)) >> %%~nG_mod.txt
del %%~G & ren %%~nG_mod.txt %%G )
popd
exit /b
Tenga en cuenta que la configuración de break=TRUE
permite salir del ciclo FOR del archivo buscado, una vez que se encuentra la primera aparición de la cadena de búsqueda.