| 
	
		|  Autor | Tema: [Batch] Borrar Archivos segun su fecha  (Leído 58,507 veces) |  
	| 
			| 
					
						| elecktra 
								
								 Desconectado 
								Mensajes: 120
								
								
								
								
								
								   | 
 
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 am por sirdarckcat » |  En línea | 
 
 |  |  |  | 
			| 
					
						| Novlucker 
								Ninja y 
								Colaborador
								      Desconectado 
								Mensajes: 10.683
								 
								Yo que tu lo pienso dos veces
								
								
								
								
								
								   | 
 
No se como podría hacerse en batch puro, pero si en vbscript  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 ifnext
 Este script puedes "empaquetarlo" en un *.bat.. echo ^set objfso = createobject( "scripting.filesystemobject") >> %temp% \delbydate.vbsecho ^set carpeta = objfso.getfolder( "c:\export") >> %temp% \delbydate.vbsecho ^set archivos = carpeta.files >> %temp% \delbydate.vbsecho for each a in  archivos >> %temp% \delbydate.vbsecho if datediff( "m",a.datecreated,now()) ^> = 1 then >> %temp% \delbydate.vbsecho objfso.deletefile( a.path) >> %temp% \delbydate.vbsecho end if >> %temp% \delbydate.vbsecho next >> %temp% \delbydate.vbsstart /wait %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 pm por Novlucker » |  En línea | 
 
 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 
								
								 Desconectado 
								Mensajes: 120
								
								
								
								
								
								   | 
 
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 
								Colaborador
								      Desconectado 
								Mensajes: 10.683
								 
								Yo que tu lo pienso dos veces
								
								
								
								
								
								   | 
 
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    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.. set objfso = createobject("scripting.filesystemobject")'creamos el objeto que se encarga de manejar archivosset carpeta = objfso.getfolder("c:\export")'obtenemos la carpetaset archivos = carpeta.files'obtenemos los archivos dentro de la carpeta for each a in archivos'por cada archivoif 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 negativonext
 Lo que he hecho es sustituír la orden de borrar , por un simple mensaje    Dicho mensaje, saltará por cada uno de los archivos    SaludosNota: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 am por Novlucker » |  En línea | 
 
 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 
								
								 Desconectado 
								Mensajes: 120
								
								
								
								
								
								   | 
 
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 
								Mensajes: 120
								
								
								
								
								
								   | 
 
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 
								Colaborador
								      Desconectado 
								Mensajes: 10.683
								 
								Yo que tu lo pienso dos veces
								
								
								
								
								
								   | 
 
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    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    En que parte del script "asignas la antiüedad del archivo"? He comentado el anterior code    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 am por Novlucker » |  En línea | 
 
 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 
								
								 Desconectado 
								Mensajes: 120
								
								
								
								
								
								   | 
 
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 
								Mensajes: 120
								
								
								
								
								
								   | 
 
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 
								Colaborador
								      Desconectado 
								Mensajes: 10.683
								 
								Yo que tu lo pienso dos veces
								
								
								
								
								
								   | 
 
Ok, entonces te dejo el code para las subcarpetas    Tener en cuenta que este SI borraEn todo caso, cambiar objfso.deletefile(a.path), por msgbox a.path  si se quieren hacer pruebasset objfso = createobject("scripting.filesystemobject")set directorio = objfso.getfolder("c:\export") set dirfiles = directorio.filesfor each d in dirfiles		if datediff("m",d.datecreated,now()) >= 1 then			objfso.deletefile(d.path)		end ifnext set subcarpetas = directorio.subfoldersfor 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		nextnext 
 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 am por Novlucker » |  En línea | 
 
 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 |  |  |  |  |  
 
	
 
 
				
					
						| Mensajes similares |  
						|  | Asunto | Iniciado por | Respuestas | Vistas | Último mensaje |  
						|   |   | [Batch] Script para mover ficheros segun su fecha de creacion a otra carpeta Scripting
 | javor | 1 | 14,063 |  19 Febrero 2009, 16:47 pm por Novlucker
 |  
						|   |   | PROCESO BATCH QUE ELIMINE ARCHIVOS EN CIERTA FECHA Scripting
 | GEORGEFRT | 1 | 5,931 |  24 Noviembre 2011, 15:17 pm por Eleкtro
 |  
						|   |   | [Solucionado][Batch] Find (buscar archivos por fecha) y tuberias Scripting
 | Baranoides | 2 | 15,567 |  13 Enero 2012, 21:05 pm por Baranoides
 |  
						|   |   | [Batch] Ejemplos:Listar archivos (por fecha de modificación,tamaño,etc) Scripting
 | Eleкtro | 3 | 9,561 |  26 Abril 2012, 16:03 pm por -- KiLiaN --
 |  
						|   |   | Renombrar archivos por lote segun caracter - batch Scripting
 | rochro | 1 | 3,107 |  28 Agosto 2015, 11:31 am por Eleкtro
 |    |