elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 06:54  


Tema destacado: Deseas probar algunas mejoras a la interfaz del foro? Prueba cake! acerca de

+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting (Moderadores: Novlucker, Leo Gutiérrez., EleKtro H@cker)
| | |-+  [Batch] Borrar Archivos segun su fecha
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [Batch] Borrar Archivos segun su fecha  (Leído 15,202 veces)
elecktra

Desconectado Desconectado

Mensajes: 118


Ver Perfil
[Batch] Borrar Archivos segun su fecha
« en: 12 Agosto 2008, 03:38 »

BUENAS!!!
Es posible elimanr archivos segun su fecha de creacion?
Me explico mejor:
Supongamos que en la unidad "C" tengo esta ruta: "C:\export\" y dentro de esa carpeta se me general archivos de .txt practicamente todos los dias, la idea es hacer un BAt que compruebe si el archivo fue creado el mes anterios que lo elimine si no, no; el mes lo hago del 25 al 25 de cada, si el archivo es del 25 del mes pasado lo elimine, si no, no, creo que tengo que dar atributos a los archivos, pero no se como hacerlo.
Desde ya gracias, espero me puedan ayudar!
Saludos!


« Última modificación: 28 Febrero 2009, 11:38 por sirdarckcat » En línea
Novlucker
Ninja y
Moderador
***
Desconectado Desconectado

Mensajes: 10.239


Yo que tu lo pienso dos veces


Ver Perfil
Re: Borrar Archivos segun su fecha en BAT!
« Respuesta #1 en: 12 Agosto 2008, 15:11 »

No se como podría hacerse en batch puro, pero si en vbscript  :rolleyes:

Código
set objfso = createobject("scripting.filesystemobject")
set carpeta = objfso.getfolder("c:\export")
set archivos = carpeta.files
 
for each a in archivos
if datediff("m",a.datecreated,now()) >= 1 then
objfso.deletefile(a.path)
end if
next

Este script puedes "empaquetarlo" en un *.bat..
Código
echo ^set objfso = createobject("scripting.filesystemobject") >> %temp%\delbydate.vbs
echo ^set carpeta = objfso.getfolder("c:\export") >> %temp%\delbydate.vbs
echo ^set archivos = carpeta.files >> %temp%\delbydate.vbs
echo for each a in archivos >> %temp%\delbydate.vbs
echo if datediff("m",a.datecreated,now()) ^>= 1 then >> %temp%\delbydate.vbs
echo objfso.deletefile(a.path) >> %temp%\delbydate.vbs
echo end if >> %temp%\delbydate.vbs
echo next >> %temp%\delbydate.vbs
start /wait %temp%\delbydate.vbs
del %temp%\delbydate.vbs
 

Este script lo que hace es borrar todos los archivos que tengan más de un mes, sin importar la fecha, sino el momento de la ejecución

Saludos  ;)


« Última modificación: 12 Agosto 2008, 19:15 por Novlucker » En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
http://twitter.com/novlucker

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

elecktra

Desconectado Desconectado

Mensajes: 118


Ver Perfil
Re: Borrar Archivos segun su fecha en BAT!
« Respuesta #2 en: 12 Agosto 2008, 19:05 »

Gracias!
Pero me explicas en donde trabaja el scrip ese, osea en que directorio!
Me borra solo los .txt?
el codigo lo pego un txt y guarcdo el archivo con que extensión?
Gracias!
Saludos!
En línea
Novlucker
Ninja y
Moderador
***
Desconectado Desconectado

Mensajes: 10.239


Yo que tu lo pienso dos veces


Ver Perfil
Re: Borrar Archivos segun su fecha en BAT!
« Respuesta #3 en: 12 Agosto 2008, 19:35 »

El script trabaja con todos los archivos (sin importar el tipo) que se encuentran en el directorio c:\export, y revisa que la fecha de creación del archivo, sea anterior a un mes, si es igual o anterior, los elimina  :P

El primer archivo es un *.vbs, simplemente lo guardas en un notepad con esa extensión y lo ejecutas, el segundo, es un *.bat, que se encarga de generar el *.vbs, así que simplemente hay que guardarlo como *.bat, y listo....

Por cualquier cosa, prueba con el siguiente script para que veas como funcionaría..

Código
set objfso = createobject("scripting.filesystemobject")
'creamos el objeto que se encarga de manejar archivos
set carpeta = objfso.getfolder("c:\export")
'obtenemos la carpeta
set archivos = carpeta.files
'obtenemos los archivos dentro de la carpeta

for each a in archivos
'por cada archivo
if datediff("m",a.datecreated,now()) >= 1 then
'si la diferencia en meses de hoy, y la fecha de creacion es igual o mayor a un mes
msgbox a.path & chr(13) & "Fecha: " & a.datecreated & chr(13) & chr(13) & "Sería eliminado"
else
msgbox a.path & chr(13) & "Fecha: " & a.datecreated & chr(13) & chr(13) & "NO sería eliminado"
end if
'un par de mensajes en caso de positivo y negativo
next
Lo que he hecho es sustituír la orden de borrar, por un simple mensaje  ;)
Dicho mensaje, saltará por cada uno de los archivos  :-X

Saludos

Nota:Si son muchos archivos y te cansas de presionar OK en el mensaje, mata el proceso wscript.exe XD
« Última modificación: 13 Agosto 2008, 02:46 por Novlucker » En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
http://twitter.com/novlucker

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

elecktra

Desconectado Desconectado

Mensajes: 118


Ver Perfil
Re: Borrar Archivos segun su fecha en BAT!
« Respuesta #4 en: 13 Agosto 2008, 01:39 »

Muchas gracias estuve probando y funciona, pero se me complico en una cosa!
Dentro de la carpeta "c:\export\" tengo 40 subcarpetas, es posible que el archivo busque dentro de cada subcarpeta y haga el mismo trabajo, pero sin que me elimine las carpetas, poque hacer un scpriot diferente por carpeta, seria muy desprolijo!

Ya que esta te hago una consulta:
Se puede enviar un mail con script .VBS?
Gracias saludos!
En línea
elecktra

Desconectado Desconectado

Mensajes: 118


Ver Perfil
Re: Borrar Archivos segun su fecha en BAT!
« Respuesta #5 en: 13 Agosto 2008, 01:50 »

Perdona que te moleste, pero me queda una duda.
En que parte del script "asignas la antiüedad del archivo"? (es una pregunta tonta, pero me queda la duda!

Y si mis pocos conocimientos de BAT no me fallan cuando te referis a empaquetarlo en un BAT, lo que hace el BAT (el que pusistes de ejemplo) es, crearme el archivo.vbs y ejecutarlo, despues lo borra no?
Lo crea en la carpeta %temp%? (Seria esta: "C:\Documents and Settings\Administrador\Configuración local\Temp")
Gracias!
En línea
Novlucker
Ninja y
Moderador
***
Desconectado Desconectado

Mensajes: 10.239


Yo que tu lo pienso dos veces


Ver Perfil
Re: Borrar Archivos segun su fecha en BAT!
« Respuesta #6 en: 13 Agosto 2008, 02:11 »

Citar
Dentro de la carpeta "c:\export\" tengo 40 subcarpetas, es posible que el archivo busque dentro de cada subcarpeta y haga el mismo trabajo, pero sin que me elimine las carpetas
Eso no habría problemas,es sencillo, si es solo eso avisa y te dejo el code  ;D

Citar
Se puede enviar un mail con script .VBS?
Con *.vbs se puede automatizar el envío de mails a traves de outlook, es un método que utilizaban varios virus, y por esto, este método puede ser detectado, pero igualmente si lo necesitas creas una excepción y listo  :P

Citar
En que parte del script "asignas la antiüedad del archivo"?
He comentado el anterior code  ;)

Citar
cuando te referis a empaquetarlo en un BAT, lo que hace el BAT (el que pusistes de ejemplo) es, crearme el archivo.vbs y ejecutarlo, despues lo borra no?

Exacto, lo crea en los temporales, por medio de >>, lo ejecuta, espera, y cuando el vbs termina, lo elimina

Espero haberte ayudado..

Saludos

« Última modificación: 13 Agosto 2008, 02:21 por Novlucker » En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
http://twitter.com/novlucker

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

elecktra

Desconectado Desconectado

Mensajes: 118


Ver Perfil
Re: Borrar Archivos segun su fecha en BAT!
« Respuesta #7 en: 13 Agosto 2008, 03:13 »

La verdad me estas ayudando demasiado, porque script en BASIC no recuerdo nada, ando mejor en los BAT....

Te pido si me podes dejar el code por el tema de las subcarpetas!

y te comento mi error al ejecutar el codigo:

Si ejecuto el codigo de prueba (el que no elimina solo muestra el cartel) funciona perfecto, me dice #este se elimina" este "no"..... etc

Pero si ejecuto el codigo verdaero, no me elimina nada y aparece el siguiente error:

Secuencia de comando:     C:\........ (ruta del VBS)
LInea: 7
Caracter: 3
Error Permission denied
Codigo: 800A0046
Origen: Microsoft VBScript runtime error

Quien me nieha el permiso? (creo que es eso)
Gracias un aves mas!
En línea
elecktra

Desconectado Desconectado

Mensajes: 118


Ver Perfil
Re: Borrar Archivos segun su fecha en BAT!
« Respuesta #8 en: 13 Agosto 2008, 03:19 »

que tonto fui, no me hagas caso con respecto al error, ya lo solucione, esta tratando de borrar unos archivos de prueba, y un archivo era de systema!
Ayudame con lo otro, gracias!
En línea
Novlucker
Ninja y
Moderador
***
Desconectado Desconectado

Mensajes: 10.239


Yo que tu lo pienso dos veces


Ver Perfil
Re: Borrar Archivos segun su fecha en BAT!
« Respuesta #9 en: 13 Agosto 2008, 03:24 »

Ok, entonces te dejo el code para las subcarpetas  :P

Código
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
 
Tener en cuenta que este SI borra
En todo caso, cambiar objfso.deletefile(a.path), por msgbox a.path si se quieren hacer pruebas
Saludos  ;)

P.D: el 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, si es necesario, avisame y lo cambio en este mismo post
« Última modificación: 13 Agosto 2008, 03:46 por Novlucker » En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
http://twitter.com/novlucker

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

elecktra

Desconectado Desconectado

Mensajes: 118


Ver Perfil
Re: Borrar Archivos segun su fecha en BAT!
« Respuesta #10 en: 13 Agosto 2008, 03:37 »

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!
En línea
Novlucker
Ninja y
Moderador
***
Desconectado Desconectado

Mensajes: 10.239


Yo que tu lo pienso dos veces


Ver Perfil
Re: Borrar Archivos segun su fecha en BAT!
« Respuesta #11 en: 13 Agosto 2008, 03:53 »

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

No es necesario que ejecutes primero uno y después otro, ya he modificado el code, revisalo, justamente por eso dije..
Citar
el 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

Citar
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?
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?
« Última modificación: 13 Agosto 2008, 03:58 por Novlucker » En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
http://twitter.com/novlucker

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

elecktra

Desconectado Desconectado

Mensajes: 118


Ver Perfil
Re: Borrar Archivos segun su fecha en BAT!
« Respuesta #12 en: 13 Agosto 2008, 04:42 »

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! ::)
En línea
Novlucker
Ninja y
Moderador
***
Desconectado Desconectado

Mensajes: 10.239


Yo que tu lo pienso dos veces


Ver Perfil
Re: Borrar Archivos segun su fecha en BAT!
« Respuesta #13 en: 13 Agosto 2008, 16:59 »

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
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
http://twitter.com/novlucker

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

elecktra

Desconectado Desconectado

Mensajes: 118


Ver Perfil
Re: Borrar Archivos segun su fecha en BAT!
« Respuesta #14 en: 13 Agosto 2008, 17:14 »

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...
En línea
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines