Crear un .bat que haga una operación sobre archivo según su fecha

Iniciado por hermess87, 18 Marzo 2011, 13:55 PM

0 Miembros y 1 Visitante están viendo este tema.

hermess87

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 (dos) [Seleccionar]

FOR %%d IN (*.msg) DO (

for /f "tokens=3" %%f in ('findstr /i "address:" %%d') do (

set errores=%%f
echo %%f >> correos_rebotados.txt
)

)



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 (dos) [Seleccionar]
@echo off
setlocal ENABLEEXTENSIONS
call :dias %date%
set /a j+= -1
call :inc %j%


:dias
for /f "tokens=1,2,3 delims=-/." %%a in ("%1") do (
  set dd=%%a&set mm=%%b&set yy=%%c)
set /a dd=100%dd%%%100,mm=100%mm%%%100
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633

:inc
set /a a=%1+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
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
set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
(if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%)



FOR %%d IN (*.msg) DO (

echo %dd%/%mm%/%yy% >> correos_rebotados.txt

for /f "tokens=3" %%f in ('findstr /i "address:" %%d') do (

set errores=%%f
echo %%f >> correos_rebotados.txt
)

)


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

leogtz

Sin probar:


Código (dos) [Seleccionar]
@echo off
setlocal ENABLEEXTENSIONS
call :dias %date%
set /a j+= -1
call :inc %j%

for %%_ in (*.html) do (

for /f "tokens=1 delims=/" %%a in ("%%~t_") do (

if "%%a"=="%dd%" (
findstr /i "address:" "%%_" >> correos_rebotados.txt
)

)

)

goto:eof

:dias
for /f "tokens=1,2,3 delims=-/." %%a in ("%1") do (
set dd=%%a&set mm=%%b&set yy=%%c
)

set /a dd=100%dd%%%100,mm=100%mm%%%100
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633

goto:eof

:inc

set /a a=%1+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
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
set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
if %mm% LSS 10 set mm=0%mm%
if %dd% LSS 10 set dd=0%dd%
goto:eof
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com