Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: parlan en 16 Noviembre 2009, 15:55 pm



Título: BAT --> Borrado del fichero mas antiguo a partir de una ruta dada
Publicado por: parlan en 16 Noviembre 2009, 15:55 pm
Hola!
Ante todo gracias por adelantado a quien pueda echarme un cable. No conozco casi nada de batch ni scripting (aparte de lo leido, asiq por favor, pido si pudiera ser explicarmelo como "para tontos" porfavor...) y me veo en la situacion de q tengo q hacer un script en BAT (puro y duro) que al ejecutarse me borre el fichero mas antiguo de una ruta concreta... Contando con que no se practicametne nada de este tema, he encontrado una solucion con powershell, pero necesitaria q fuera con batch-batch, para no tener q instalar el powershell... no se si me explico... Mi S.O. es el Vista, por si puede interesar... Por favor, espero sus noticias!!!

Muchas gracias!


Título: Re: BAT --> Borrado del fichero mas antiguo a partir de una ruta dada
Publicado por: SuperDraco en 16 Noviembre 2009, 16:14 pm
yo no te puedo ayudar mucho pero si buscas encontrarás un post mio en esta pagina o la siguiente preguntando lo mismo que tu, quizás la solucion que me dieron te sirva, saludos.


Título: Re: BAT --> Borrado del fichero mas antiguo a partir de una ruta dada
Publicado por: parlan en 16 Noviembre 2009, 16:34 pm
Hola! No veo a que post tuyo te refieres... puedes indicarme el Asunto del mismo? Gracias!


Título: Re: BAT --> Borrado del fichero mas antiguo a partir de una ruta dada
Publicado por: SuperDraco en 16 Noviembre 2009, 20:18 pm
http://foro.elhacker.net/scripting/batch_que_busque_y_elimine_log_anteriores_a_una_fecha_solucionado-t274097.0.html


no se si te servirá un poco, bueno saludos!


Título: Re: BAT-->Borrado del fichero mas antiguo a partir de una ruta dada SOLUCIONADO
Publicado por: parlan en 17 Noviembre 2009, 17:05 pm
Buenas!!!
Al final tras darle muchas vueltas lo saqué.
Lo q hice fue hacer un dir q me ordenase de mas antiguo a mas nuevo los ficheros (dir /od) y a partir de ahi coger el primero del listado con un for y borrarle, es decir, cuando el contador aun es 0, osea q es el primer archivo del directorio asi organizado... Si, seguro q hay mejores opciones, pero es la q saqué.

Como no se nada de batch y tal, me vi en el problema de q una variable modificada en el for no se veia luego, asiq no podia hacer el contador. Eso lo arreglé con "setlocal EnableDelayedExpansion" y poniendo luego la variable en cuestion entre "!"

Espero os sirva!!!
No está mal pa ser la primera vez q me pego con esto, no?

Código:
@echo off
setlocal EnableDelayedExpansion
dir /od C:\pruebas
set _cont=0
FOR %%i IN (C:\pruebas\Fich_prueba*.txt) DO (echo [!_cont!] & (if !_cont!==0 del "%%i") & set /a _cont+=1)
echo Total=!_cont!


Título: Re: BAT --> Borrado del fichero mas antiguo a partir de una ruta dada
Publicado por: SuperDraco en 18 Noviembre 2009, 00:58 am
para ser la primera vez, superas a muchos!!! y yo me incluyo :), además tu script me va a servir para la misma función (si me funcionase bien), gracias.

EDITO: una pregunta, sabes como se podria definir el tipo de fichero más antiguo a borrar? quiero decir... yo quiero que borre el fichero mas antiguo, pero de extension ".log"  por ejemplo... ¿?


Título: Re: BAT --> Borrado del fichero mas antiguo a partir de una ruta dada
Publicado por: parlan en 18 Noviembre 2009, 17:44 pm
No se si te entiendo, kieres borrar el log mas antiguo, no?

Yo lo q borro es el .txt mas antiguo (al hacer el dir /od y colocar los mas antiguos primero), será solo cambiar la extension de .txt a .log, no? asi, solo te busca sobre los archivos q cumplen ese patron... digo yo... no se si te refieres a eso... esq yo tenia q borrar de todos los posibles ficheros de esa ruta solo los del patron "Fich_prueba*.txt"... Kizas en tu caso sea ahi poner tu patron, en plan "*.log" simplemente....

Pero vmaos, q ni idea, q soy novata en esto...

Saludos!!!


Título: Re: BAT --> Borrado del fichero mas antiguo a partir de una ruta dada
Publicado por: SuperDraco en 18 Noviembre 2009, 20:37 pm
bueno ya te entiendo, es que no se usar el FOR. pero ya me a kedao claro donde se haya el "patón" en el script, cone so me es suficiente xD garcias.