Encuentra una combinación de FolderName\file.name de forma recursiva en un archivo por lotes y devuelve la(s) ruta(s) completa(s).
Estoy buscando encontrar un nombre de archivo específico dentro de un nombre de carpeta específico en un directorio recursivamente y devolver la ruta completa si hay una coincidencia o múltiples coincidencias. Estoy buscando una búsqueda de patrón que incluso pueda usar una búsqueda de 3 partes, por ejemplo (carpetaA\carpetaB\nombre.archivo). Pero por ahora, 2 partes serán suficientes. Hasta ahora mis esfuerzos me han llevado a esto. Pero es terriblemente lento, “16+ segundos para encontrar la coincidencia”.
::buscar de forma recursiva la combinación nombrecarpeta\nombre.archivo
cd C:\carpetaBusqueda
for /r %a in (NombreCarpeta) do @if exist "%~fa\nombre.archivo" echo %~fa
Solo necesito adentrarme hasta 2 o 4 niveles y obtener la primera coincidencia carpeta\archivo.ext y obtener la ruta completa. ¿Hay una forma más rápida de hacer esto, tal vez con el comando dir o una lista de exclusión o incluso una verdadera búsqueda de patrón *carpeta\archivo?
davy.ai
Solución:
Una forma de acelerar la búsqueda es usar el comando
dir
en lugar del buclefor
. El comandodir
tiene una opción/s
que permite buscar de forma recursiva en subdirectorios.El comando para buscar un nombre de archivo específico dentro de un nombre de carpeta específico en un directorio de forma recursiva y devolver la ruta completa es:
Esto buscará el nombre de archivo
nombre.archivo
en la ruta de carpetaC:\carpetaBusqueda\carpetaA\carpetaB
y todos sus subdirectorios de forma recursiva. La opción/b
mostrará únicamente la ruta completa del/os archivo(s) encontrado(s).Si deseas buscar un patrón de nombres de carpetas y archivos, puedes usar los comodines
*
y?
. Por ejemplo, para buscar todos los archivos con extensión.txt
en una ruta de carpeta que comienza conlogs
y tiene un subdirectorio que comienza consys
, puedes utilizar el siguiente comando:Esto buscará cualquier archivo con extensión
.txt
en una ruta de carpeta que comienza conlogs
y tiene un subdirectorio que comienza consys
, sin importar qué tan profundo esté ubicado el subdirectorio.Usar el comando
dir
debería ser más rápido que el buclefor
, especialmente al buscar un gran número de archivos o carpetas.