Tema destacado: Últimos eventos sobre seguridad/inseguridad
Autor
|
Tema: [Batch] Borrar Archivos segun su fecha (Leído 15,202 veces)
|
elecktra
Desconectado
Mensajes: 118
|
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!
|
|
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Moderador
 
Desconectado
Mensajes: 10.239
Yo que tu lo pienso dos veces
|
Buenas... podría meterme ha hacer for.. pero creo que haciendo uso de la línea de comandos es más sencillo....  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 temporalPara verlo en funcionamiento con simples mensajes, cambia.... objfso.deletefile(objfso.getfile(fi).path) por esto... msgbox objfso.getfile(fi).path Saludos 
|
|
|
|
« Última modificación: 27 Agosto 2008, 13:33 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
Mensajes: 118
|
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
|
|
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Moderador
 
Desconectado
Mensajes: 10.239
Yo que tu lo pienso dos veces
|
Una tontería.... la verdad.. ni lo había probado  ... 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  Saludos
|
|
|
|
« Última modificación: 27 Agosto 2008, 00:19 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
Mensajes: 118
|
ok, cuaNDO QUIERAS, LO ESPERO... SALUDOS Y GRACIAS!
|
|
|
|
|
En línea
|
|
|
|
elecktra
Desconectado
Mensajes: 118
|
Mira he probado y funciona de maravilla, lo que hice es cambiar la linea:
msgbox objfso.getfile(fi).path
por:
objfso.deletefile(objfso.getfile(fi).path)
y me elimina los archivos, el problema es que elimina y aparece un "msgbox" con el nombre de archivo que va eliminando y me obliga a hacer click en "Aceptar"
probe cambiando el "msgbox if" por un "delete if" y no funciono. La idea es que sea automatico! Gracias! saludos!
|
|
|
|
|
En línea
|
|
|
|
|
|
elecktra
Desconectado
Mensajes: 118
|
Probado y aprobado, funciono de maravillas, porque la otra ves tuve que editarlo por cada carpeta que tenia, y era bastante largo el codigo.. Muchas Gracias! despues posteo el proyecto realizado completo y explico que hace! Saludos!
|
|
|
|
|
En línea
|
|
|
|
elecktra
Desconectado
Mensajes: 118
|
Hola maestro como va, tengo un ultmo problema, te cuento: el tema es que empaquete el script en un BAT pero me falla y el problema es desde la linea:
if objfso.getfile(fi).parentfolder.name <> Registros then
el problema es que yo hago asi le agrego el echo CODIGO >> del.vbs
pero como el codigo ya tiene un > no me lo exporta. como puedo soluciobarlo? gracias saludos!
|
|
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Moderador
 
Desconectado
Mensajes: 10.239
Yo que tu lo pienso dos veces
|
Bueno... eso si no lo voy a hacer yo... te dejo el trabajo....  Pero el problema esta aquí.... como ya has visto.. hay caracteres que son utilizados con otros fines por ms-dos... por lo que funciones de *.vbs, como set deben de ser escapadas con ^... ej: echo ^set objfso = createobject(scripting.filesystemobject") >> del.vbs echo if objfso.getfile(fi).parentfolder.name ^<^> Registros then >> del.vbs Saludos P.D:Como he comentado... los "set" también deben de ser escapados.. ya que echo set es propio de ms-dos 
|
|
|
|
|
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
Mensajes: 118
|
no problem, gracias de todos modos! saludos! posteare este problema! saludos!
|
|
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Moderador
 
Desconectado
Mensajes: 10.239
Yo que tu lo pienso dos veces
|
posteare este problema! Que es lo que debes postear? si ya te he dado la respuesta... ^<---esto esta en el ej anteriorSaludos
|
|
|
|
|
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
Mensajes: 118
|
ahora si, yo habia probado pero oniendolo el simbolo despues de echho, pero iva antes del simbolo! saludos gracias!
|
|
|
|
|
En línea
|
|
|
|
javor
Desconectado
Mensajes: 3
|
Hola soy nuevo en el foro y he visto que en temas de vbs, soy muy buenos y como tengo una duda, queria a ver si alguien me puede ayudar. Yo necesitaria lo mismo que hace el script que se indica en este tema, pero yo lo que necesito no es borrar el resultado si no que es moverlo a una carpeta o incluso mas dificil, comprimierlo en un zip o rar. SI alguien me puede ayudar, se lo agradeceria mucho.
Saludos
|
|
|
|
|
En línea
|
|
|
|
dvreggionx
Desconectado
Mensajes: 14
|
que complicado.... aca tenes una Solucion mas simple forfiles /p "C:\CarpetaDeseada" /S /M *.* /D -5 /c "cmd /c del @path" *.* se puede reemplazar por algun nombre en especial o por alguna extensión en especial por ejemplo *.exe -5 son la cantidad de dias de antiguedad por ejemplo asi como esta ahora te va a borrar todos los archivos con una antiguedad mayor a 5 dias esa linea editala a tu gusto, guardala desde un notepad como ScritBorraArchivosViejos.bat y si queres que se ejecute todos los dias hacelo desde las tareas programadas de windows
|
|
|
|
|
En línea
|
|
|
|
|
|