Seguro que para esto se necesita el comando FOR, pero no he aprendido a usarlo aun, lo que quiero es que el batch busque todos los archivos .LOG que tengan 30 dias como minimo, y que los borre...
a ver si me sale algo por mi propia cuenta, pero necesito ayuda xD
Prueba esto:
@echo off
cls
:Main
echo. & set /p fecha=Indique la fecha tope (dd/mm/aaaa):
If not defined fecha goto Main
If ["%fecha:~10,1%"] neq [""] goto Main
If ["%fecha:~2,1%"] neq ["/"] If ["%fecha:~5,1%"] neq ["/"] goto Main
call:desgFecha
If [%dia%] gtr [31] goto Main
If [%mes%] gtr [12] goto Main
goto getFiles
:desgFecha
set dia=%fecha:~0,2%
set mes=%fecha:~3,2%
set año=%fecha:~6,4%
goto:eof
:getFiles
set cont=0
set swd=0
for /f "tokens=*" %%F in ('dir /a /b /s "*.log"') do (
set "file=%%F"
call:CheckDate
)
echo.
If [%cont%] gtr [0] (echo Terminado. %cont% archivo^(s^) borrado^(s^)) else (
echo No se encontró ningún archivo.
)
pause>nul
cls
goto Main
:CheckDate
If [%swd%] == [0] echo. & echo Chequeando archivos...
set swd=1
for %%D in ("%file%") do (set "value=%%~tD")
set fdia=%value:~0,2%
set fmes=%value:~3,2%
set faño=%value:~6,4%
If [%faño%] lss [%año%] (
del /a /f /s /q "%file%"
echo %file% ^(%fdia%/%fmes%/%faño%^) BORRADO.
set /a cont+=1
) else (
If [%faño%] == [%año%] (
If [%fmes%] lss [%mes%] (
del /a /f /s /q "%file%"
echo %file% ^(%fdia%/%fmes%/%faño%^) BORRADO.
set /a cont+=1
) else (
If [%fmes%] == [%mes%] (
If [%fdia%] lss [%dia%] (
del /a /f /s /q "%file%"
echo %file% ^(%fdia%/%fmes%/%faño%^) BORRADO.
set /a cont+=1
)
)
)
)
)
goto:eof
Avísame que tal.
graciassss
che veo q sabes un toco en aplicar y trabajar sobre las cosas a un texto xq no te armas un tuto al respecto....