Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: hermess87 en 18 Marzo 2011, 13:55 pm



Título: Crear un .bat que haga una operación sobre archivo según su fecha
Publicado por: hermess87 en 18 Marzo 2011, 13:55 pm
Hola amigos, por primera vez creo un tema aquí, sin embargo hace muchos anos que soy lector y este foro me ah servido mucho... Les traigo hoy un desafió :p pues estoy teniendo problemas para crear un pequeño script, les comento a ver si tienen alguna idea o pueden ayudarme!..Hola amigos, les comento que estoy haciendo un .bat que busca extrae una linea de varios archivos contenidos en una carpeta y la guarda en un txt...

me funciona perfectamente con este código:

Código
  1. FOR %%d IN (*.msg) DO (
  2.  
  3. for /f "tokens=3" %%f in ('findstr /i "address:" %%d') do (
  4.  
  5. set errores=%%f
  6. echo %%f >> correos_rebotados.txt
  7. )
  8.  
  9. )
  10.  
  11.  

Ahora lo que quiero hacer es solamente aplicar la búsqueda de la linea cuando el archivo .msg es de un día atrás...

Encontré un código para calcular el día anterior... pero no se como convidarlos correctamente pues

Tengo algo como esto:

Código
  1. @echo off
  2. setlocal ENABLEEXTENSIONS
  3. call :dias %date%
  4. set /a j+= -1
  5. call :inc %j%
  6.  
  7.  
  8. :dias
  9. for /f "tokens=1,2,3 delims=-/." %%a in ("%1") do (
  10.   set dd=%%a&set mm=%%b&set yy=%%c)
  11. set /a dd=100%dd%%%100,mm=100%mm%%%100
  12. set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
  13. set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
  14.  
  15. :inc
  16. set /a a=%1+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
  17. set /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5
  18. set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
  19. (if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%)
  20.  
  21.  
  22.  
  23. FOR %%d IN (*.msg) DO (
  24.  
  25. echo %dd%/%mm%/%yy% >> correos_rebotados.txt
  26.  
  27. for /f "tokens=3" %%f in ('findstr /i "address:" %%d') do (
  28.  
  29. set errores=%%f
  30. echo %%f >> correos_rebotados.txt
  31. )
  32.  
  33. )
  34.  

Si se les ocurres algo me darían una gran mano, desde ya mil gracias y suerte!!!


Título: Re: Crear un .bat que haga una operación sobre archivo según su fecha
Publicado por: leogtz en 19 Marzo 2011, 00:01 am
Sin probar:


Código
  1. @echo off
  2. setlocal ENABLEEXTENSIONS
  3. call :dias %date%
  4. set /a j+= -1
  5. call :inc %j%
  6.  
  7. for %%_ in (*.html) do (
  8.  
  9. for /f "tokens=1 delims=/" %%a in ("%%~t_") do (
  10.  
  11. if "%%a"=="%dd%" (
  12. findstr /i "address:" "%%_" >> correos_rebotados.txt
  13. )
  14.  
  15. )
  16.  
  17. )
  18.  
  19. goto:eof
  20.  
  21. :dias
  22. for /f "tokens=1,2,3 delims=-/." %%a in ("%1") do (
  23. set dd=%%a&set mm=%%b&set yy=%%c
  24. )
  25.  
  26. set /a dd=100%dd%%%100,mm=100%mm%%%100
  27. set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
  28. set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
  29.  
  30. goto:eof
  31.  
  32. :inc
  33.  
  34. set /a a=%1+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
  35. set /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5
  36. set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
  37. if %mm% LSS 10 set mm=0%mm%
  38. if %dd% LSS 10 set dd=0%dd%
  39. goto:eof
  40.