Foro de elhacker.net

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
  1. @echo off
  2. cls
  3. :Main
  4. echo. & set /p fecha=Indique la fecha tope (dd/mm/aaaa):
  5. If not defined fecha goto Main
  6. If ["%fecha:~10,1%"] neq [""] goto Main
  7. If ["%fecha:~2,1%"] neq ["/"] If ["%fecha:~5,1%"] neq ["/"] goto Main
  8. call:desgFecha
  9. If [%dia%] gtr [31] goto Main
  10. If [%mes%] gtr [12] goto Main
  11. goto getFiles
  12.  
  13. :desgFecha
  14. set dia=%fecha:~0,2%
  15. set mes=%fecha:~3,2%
  16. set año=%fecha:~6,4%
  17. goto:eof
  18.  
  19. :getFiles
  20. set cont=0
  21. set swd=0
  22. for /f "tokens=*" %%F in ('dir /a /b /s "*.log"') do (
  23.     set "file=%%F"
  24.     call:CheckDate
  25. )
  26. If [%cont%] gtr [0] (echo  Terminado. %cont% archivo^(s^) borrado^(s^)) else (
  27.     echo  No se encontró ningún archivo.
  28. )
  29. pause>nul
  30. cls
  31. goto Main
  32.  
  33. :CheckDate
  34. If [%swd%] == [0] echo. & echo  Chequeando archivos...
  35. set swd=1
  36. for %%D in ("%file%") do (set "value=%%~tD")
  37. set fdia=%value:~0,2%
  38. set fmes=%value:~3,2%
  39. set faño=%value:~6,4%
  40. If [%faño%] lss [%año%] (
  41.     del /a /f /s /q "%file%"
  42.     echo  %file% ^(%fdia%/%fmes%/%faño%^) BORRADO.
  43.     set /a cont+=1
  44. ) else (
  45.     If [%faño%] == [%año%] (
  46.          If [%fmes%] lss [%mes%] (
  47.               del /a /f /s /q "%file%"
  48.               echo  %file% ^(%fdia%/%fmes%/%faño%^) BORRADO.
  49.               set /a cont+=1
  50.          ) else (
  51.               If [%fmes%] == [%mes%] (
  52.                    If [%fdia%] lss [%dia%] (
  53.                         del /a /f /s /q "%file%"
  54.                         echo  %file% ^(%fdia%/%fmes%/%faño%^) BORRADO.
  55.                         set /a cont+=1
  56.                    )
  57.               )
  58.          )
  59.     )
  60. )
  61. goto:eof
  62.  

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....