Saber si falta un archivo dentro de subcarpetas

Saber si falta un archivo dentro de subcarpetas
Hola, tiempo atrás me creaste un Bat para averiguar si falta un archivo llamado POR dentro de una carpeta lo que ocurre es que solo lo encuentra si existe en la primera carpeta me explico.
Carpeta padre \hola dentro hay 3 carpetas con el nombre de hola 1, hola 2, hola 3, buscando funciona perfectamente.

@echo off
set carpeta=d:\carpeta prueba
set buscado=hola.jpg
set lista=d:\carpeta prueba\listarch.txt
Del /q "%lista%">nul 2>&1
Pushd %carpeta%
for /f "tokens=* delims=" %%x in ('dir /b /ad') do if not exist "%carpeta%\%%x\%buscado%" echo %carpeta%\%%x>>"%lista%"
Popd
Pause

La pregunta es la siguiente
¿Se podría crear para que también encontrara en las subcarpetas de por ejemplo hola 1. Y que hiciera el print en pantalla.
Hola\hola 1\hola 10.

Respuesta
1

Me parece que para lo que entiendo que pides no hace falta un bat, bastaría con abrir una ventana CMD/Símbolo del sistema, situarse en el directorio raíz de la unidad (digamos en C:\) y teclear el comando

DIR /S/B <nombre del archivo a buscar>

Si esta solución no cubre tus necesidades dímelo e intentamos otra cosa.

No me he explicado bien, no pretendo buscar ningún archivo, lo que me gustaría que al ejecutar el Bat igual que el anterior es que busque con más profundidad y me indique en que carpeta no se encuentra el archivo que busco.

Hay que tener en cuenta que puedo encontrarme con 3 subcarpetas desde la carpeta padre.

Ejemplo
Busco archivo nombre Hola1.txt
Todas las carpetas contienen Hola1.txt
Ese archivo se debe de encontrar en todas las carpetas lo que quiero es que me indique en que carpeta no lo contiene para crearlo.

Te entendí mal, pero creo que no fue porque te explicaras mal, fue un error de interpretación.

Prueba con esto:

@echo off
set carpeta=d:\carpeta prueba
set buscado=Hola1.txt
pushd %carpeta%
if not exist "%buscado%" echo No existe el archivo %buscado% en la carpeta %carpeta%
for /f "tokens=* delims=" %%x in ('dir /b/s /ad') do if not exist "%%x\%buscado%" echo No existe el archivo %buscado% en la carpeta %%x
Popd
Pause

En esta ocasión se emite directamente el mensaje en lugar de guardar en un archivo la lista de las carpetas en las que no se ha encontrado el archivo %BUSCADO%. Se incluye la búsqueda en la carpeta base.  Si no se quisiera esta inclusión bastaría eliminar el IF NOT EXIST que precede al FOR.

Funciona perfectamente.
Muchísimas gracias y perdona las molestias.

Saludos.

¡Estupendo!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas