[Batch] Borrar Archivos segun su fecha

Iniciado por elecktra, 12 Agosto 2008, 03:38 AM

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

elecktra

Funciona de maravilla, si no me equivoco este ultimo codigo solo elimina lo que se encuentra dentro de las subcarpetas, no la carpeta principal.
Asi me funciono a mi, entonces ejecuto primero un codigo y luego el otro, pero funciono de maravilla.

Mi explicarias el tema del mail, la idea seria que el script busque en el directorio los 2 ultimos archivos .txt crados recientemente, y los envie por mail..
Es posible?
Gracias!
Prometo devolverte la ayuda, garcias!

Novlucker

#11
CitarFunciona de maravilla, si no me equivoco este ultimo codigo solo elimina lo que se encuentra dentro de las subcarpetas, no la carpeta principal.
Asi me funciono a mi, entonces ejecuto primero un codigo y luego el otro, pero funciono de maravilla.

No es necesario que ejecutes primero uno y después otro, ya he modificado el code, revisalo, justamente por eso dije..
Citarel script no toma en cuenta subcarpetas, dentro de las subcarpetas, ni tampoco, los archivos sueltos dentro del directorio principal, sino que va derecho a las carpetas
:-X

CitarMi explicarias el tema del mail, la idea seria que el script busque en el directorio los 2 ultimos archivos .txt crados recientemente, y los envie por mail..
Es posible?
Como te comento, sería posible, pero para eso deberías de tener outlook en la pc.
En caso de tenerlo, necesito hacer memoria  :-X, ya que no lo recuerdo exactamente en este momento  :xD

Saludos

P.D: los txt son muy largos? que tipo de cuenta de correo es la destinataria, una cuenta empresarial? por que no envíar el contenido del archivo en el cuerpo del mensaje?
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

elecktra

el Outlook esta instalado, y si es nesesario se creea una cuenta de mail en Microsoft Outlook 2003/2007 o Outlook Express.
Los txt tienen "1_0017_080601_080630.txt" un nombre como este, solamente varian los números, y no llegan a pesar 1MB.
La cuenta no es empresarial, es simplemente para hacer unas pruebas, se creara una cuenta de correo nuevo.

Si tansolo se pudiera enviar el contenido del txt como mensaje, seria lo mismo.
da igual enviar los 2 txt adjuntos, o el contenido de los txt como mail.

Yo quise hacerlo por BAT con TELNET pero no funciono.
Espero puedas ayudarme, saludos.
Gracias! ::)

Novlucker

Esta relacionado al último code? o va de cero?, digo porque si es un code separado, hay que declarar los objetos y todo de nuevo, además de que el proceso de verificar cuales son los dos archivos más nuevos, puede hacerse junto al resto del code  :P

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

elecktra

Si esta relacionado con el ultimo code, la idea es que saque los dos ultimos txt de la carpeta export, y no9 de las subcarpetas!!!!
Osea que borre los archivos viejos (code anterior) de la carpeta principal y subcarpetas, y luego envie un mail con los 2 ultimos txt (como te explique antes) de la carpeta export!
Gracias, saludos..
Si es mas facil hacerlo separado, no hay problema...

elecktra

Hola, como estas?
tanto tiempo, mira, estuve viendo el codigo, y quiero hacerle una modificacion.

set objfso = createobject("scripting.filesystemobject")
set directorio = objfso.getfolder("c:\export")

set dirfiles = directorio.files
for each d in dirfiles
      if datediff("m",d.datecreated,now()) >= 1 then
         objfso.deletefile(d.path)
      end if
next

set subcarpetas = directorio.subfolders
for each carpeta in subcarpetas
   set archivos = carpeta.files
      for each a in archivos
         if datediff("m",a.datecreated,now()) >= 1 then
         objfso.deletefile(a.path)
         end if
      next
next

Este fue el ultimo code que me pasastes y como me mencionabas necesito que busque destro de las subcarpetas.
gracias!

Novlucker

#16
Buenas... podría meterme ha hacer for.. pero creo que haciendo uso de la línea de comandos es más sencillo....  :P

Código (vb) [Seleccionar]
set objshell = createobject("wscript.shell")
objshell.run "cmd /c dir c:\export /s /b > templist.txt",vbhide
wscript.sleep 2000
'listamos los archivos por línea de comandos, y guardamos el listado en un archivo temporal
'luego hacemos una pausa de dos segs para que se cree correctamente el archivo

set objfso = createobject("scripting.filesystemobject")
set temp = objfso.opentextfile("templist.txt",1)
'abrimos el archivo temporal

do until temp.atendofstream
fi = temp.readline
'leemos cada una de las líneas del archivo
if objfso.fileexists(fi) = true then
if objfso.getfile(fi).parentfolder.name <> Registros then
'si existe el archivo (para evitar que sea una carpeta) y la carpeta en la que esta es diferente de Registros
if datediff("m",objfso.getfile(fi).datecreated,now()) >= 1 then
msgbox objfso.getfile(fi).path
'revisamos la fecha y si tiene más de un mes (tomando en cuenta la fecha de hoy), lo borramos
end if
end if
end if
loop
temp.close
'cerramos el archivo temporal


Para verlo en funcionamiento con simples mensajes, cambia....
Código (vb) [Seleccionar]
objfso.deletefile(objfso.getfile(fi).path)
por esto...
Código (vb) [Seleccionar]
msgbox objfso.getfile(fi).path

Saludos  ;)
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

elecktra

Fallo, mira te cuento.
al ejecutar el script, lee el directorio, y me crea el txt con lo que encuentra, pero al momento de borrar tira un error y no hace nada.

Error:
Linea: 14
Caracter: 2
Error: Archivo no encontrado
codigo: 800A0035

otra duda, despues de ejecutarse, el txt se borra?
gracias!
Yo pense en usar un FOR pero como no entiendo casi nada de VBS..
te doy una idea, con variables se podra?
saludos

Novlucker

#18
Una tontería.... la verdad.. ni lo había probado  :xD... ya he modificado el anterior código, prueba ahora  ;)

Después de ejecutarse, el txt no se borra.. pero da igual.. ya que en la próxima ejecución es sobreescrito  :P

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

elecktra

ok, cuaNDO QUIERAS, LO ESPERO... SALUDOS
Y GRACIAS!