BAT --> Borrado del fichero mas antiguo a partir de una ruta dada

Iniciado por parlan, 16 Noviembre 2009, 15:55 PM

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

parlan

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!

SuperDraco

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.
No he vuelto, solo estoy de paso.

parlan

Hola! No veo a que post tuyo te refieres... puedes indicarme el Asunto del mismo? Gracias!


parlan

#4
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?

@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!

SuperDraco

#5
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... ¿?
No he vuelto, solo estoy de paso.

parlan

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!!!

SuperDraco

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.
No he vuelto, solo estoy de paso.