: --- hace que no se vean los comando ni el mismo al ejecutar
@echo off
: --- Cambia de directorio. El parametro /D es para cambiar de disco
CD /D d:\ejemplo
: --- Guarda directorio actual
set Home=%CD%
: --- Crea un fichero con la estructutra de directorios que cuelgan de la
: posicion actual y lo guarda en un fichero temporal.
: Cada linea es una ruta complerta desde la raiz, es decir desde D:\
DIR /S /B /A:D >%Temp%\Direc.tmp
: --- Lee el fichero temporal y para cada linea llama a la etiqueta Files
: Pasa como parametro la ruta leida
FOR /F "delims=*" %%a in (%Temp%\Direc.tmp) do Call :Files "%%a"
: --- Se coloca en el directorio de inicio, en este caso D:\EJEMPLO
CD /D %Home%
: --- Borra el fichero temporal creado con el DIR
DEL %Temp%\Direc.tmp
: --- Finaliza el BAT
goto :EOF
:Files
: --- Guarda el la variable DIR la ruta
set Dir=%1
: --- Le quita las comollas. Ver en la linea del FOR "%%a"
set Dir=%Dir:~1,-1%
: --- Variable para mostrar solo una vez el nombre del directorio
set SW=0
: --- Cambia al nuevo directorio
CD /D "%Dir%"
: --- Lee todos los ficheros. Llama a la etiqueta Validar y le pasa la fecha
FOR %%b in (*.*) do call :Validar %%~tb
: --- Se coloca en el directorio de inicio, en este caso D:\EJEMPLO
CD /D %Home%
: --- Regresa al FOR
goto :EOF
:Validar
: --- Si la fecha es la misma del sistema sale
if %1 == %Date% goto :EOF
: --- Si ya mostro el directorio sale
if %SW% == 1 goto :EOF
: --- Casmbia el valor de SW
set SW=1
: --- Muestra el nombre del directorio
echo %Dir%
: --- Regresa al FOR