Test Foro de elhacker.net SMF 2.1

Programación => Scripting => Mensaje iniciado por: SuperDraco en 10 Noviembre 2009, 18:00 PM

Título: Batch que busque y elimine ".log" anteriores a una fecha? (SOLUCIONADO)
Publicado por: SuperDraco en 10 Noviembre 2009, 18:00 PM
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
Título: Re: Batch que busque y elimine ".log" anteriores a una fecha?
Publicado por: <ИΘZIЭ(ŦB> en 11 Noviembre 2009, 19:57 PM
Prueba esto:

Código (dos) [Seleccionar]

@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.
Título: Re: Batch que busque y elimine ".log" anteriores a una fecha?
Publicado por: SuperDraco en 12 Noviembre 2009, 02:18 AM
graciassss
Título: Re: Batch que busque y elimine ".log" anteriores a una fecha? (SOLUCIONADO)
Publicado por: flony en 12 Noviembre 2009, 02:29 AM
che veo q sabes un toco en aplicar y trabajar sobre las cosas a un texto xq no te armas un tuto al respecto....