Ms-Dos - Conocimientos

 
Vista:

Conocimientos

Publicado por Desiree (12 intervenciones) el 02/10/2008 11:22:13
Hola estimados colegas, tengo la siguiente duda con respecto al siguiente planteamiento:

He realizado un bat que elimina archivos de acuerdo a un rango de fecha introducido por el usuario, esto lo hice primero creando un fichero en donde almaceno la información que arroja el comando dir, luego en otro archivo almaceno sólo aquellos archivos que se encuentren dentro del rango de fecha introducido por el usuario y por ultimo cuando ya obtengo la información borro el archivo fisicamente del directorio.

Mi pregunta es: ¿existe algún comando al que yo le pueda decir que por una fecha me busque los archivos en un directorio específico, sin tener que valerme de ficheros para poder hacer la busqueda?

Lo que pasa es que di muchas vueltas para hacer esto y no sé si exista una forma más directa.

Gracias por sus opiniones
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Conocimientos

Publicado por amparitohijo (94 intervenciones) el 13/10/2008 17:28:45
Pues no se si se podrá, pero si lo averiguas, por favor, ponte en contacto conmigo. Estoy MUY INTERESADO en ello.

Mientras tanto, te paso un script que elimina archivos *.ttt con una antiguedad superior a 62 días (modificando la variable puedes cambiar la antiguedad). Lo mismo que tu, le he dado 200 millones de vueltas al asunto, y solo se me ha ocurrido esto. Son 2 scripts (uno .BAT y otro .SR), y la complicación radicaba en encontrar una forma de restar fechas. Al final lo conseguí pasando las fechas a fecha juliana (un número entero) con el algoritmo de Van Der Woulde y restando los dos números obtenidos.

Espero que os sirva. Salu2

*********CODIGO BorrarArchivos.BAT **************
@echo off
REN BorrarArchivos.sr BorrarArchivos.sr.bat

::ESTABLECER LOS DIAS DE BORRADO (Por defecto 62)
SET/A DiasBorrado=62

:JFechaActual
set aaaa1=%date:~6,4%
set mm1=%date:~3,2%
set dd1=%date:~0,2%
SET JMM1=%mm1%
SET JDD1=%dd1%
IF 1%JMM1% LSS 110 SET JMM1=%JMM1:~1%
IF 1%JDD1% LSS 110 SET JDD1=%JDD1:~1%
:: Algoritmo de Van Der Woude
SET /A JMes1 = ( %JMM1% - 14 ) / 12
SET /A JYear1 = %aaaa1% + 4800
SET /A JFechaHOY = 1461 * ( %JYear1% + %JMes1% ) / 4 + 367 * ( %JMM1% - 2 -12 * %JMes1% ) / 12 - ( 3 * ( ( %JYear1% + %JMes1% + 100 ) / 100 ) ) / 4 + %JDD1% - 32075
FOR %%A IN (JMes1 JYear1) DO SET %%A=
ECHO %JFechaHOY%

::CAMBIAR *.ttt POR LA MASCARA DESEADA
dir *.ttt /A:-d /O:-d /4>LISTABORRAR.TXT

for /f "skip=5 TOKENS=1,2,3,7 delims=:/ " %%a in (LISTABORRAR.TXT) do ((SET/A DD2=%%a & SET/A MM2=%%b & SET/A AAAA2=%%c) && SET ARCHIVO2=%%d && (call BorrarArchivos.sr.bat))
DEL LISTABORRAR.TXT
DEL SCRIPT.FTP
REN BorrarArchivos.sr.bat BorrarArchivos.sr
EXIT
*********FIN CODIGO BorrarArchivos.BAT **************

*********CODIGO BorrarArchivos.SR **************
:: Algoritmo de Van Der Woude
IF 1%MM2% LSS 110 SET MM2=%MM2:~1%
IF 1%DD2% LSS 110 SET DD2=%DD2:~1%
SET /A JMes2 = ( %MM2% - 14 ) / 12
SET /A JYear2 = %AAAA2% + 4800
SET /A JFechaArch = 1461 * ( %JYear2% + %JMes2% ) / 4 + 367 * ( %MM2% - 2 -12 * %JMes2% ) / 12 - ( 3 * ( ( %JYear2% + %JMes2% + 100 ) / 100 ) ) / 4 + %DD2% - 32075
FOR %%A IN (JMes2 JYear2) DO SET %%A=
SET/a diferencia=%JFechaHOY%-%JFechaArch%
IF %diferencia% GEQ %DiasBorrado% ((DEL /Q %archivo2% && echo %archivo2% -- Antiguedad:%diferencia% dias>>ArchivosBorradosAuto.txt))
GOTO:EOF
*********FIN CODIGO BorrarArchivos.SR **************
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Conocimientos

Publicado por DD (12 intervenciones) el 14/10/2008 09:13:21
Hola pues si lo he conseguido pero con un sólo detalle deben ser archivos dentro de un mismo año, en realidad este detalle se puede programar pero es un coñazo y pues lo dejé así porque me vale para lo que necesito.

Te explico como funciona, el usuario introduce una fecha de inicio y luego una fecha fin en formato dd/mm/aaaa y el programa busca dentro de ese rango de fecha los archivos .log

Existe otro detalle tuve problemas con el numero 8 y 9 y pues lo corregí aunque sigue arrojando un mensaje de error pero no pasa nada porque a pesar de ese mensaje el programa funciona.

Dime si aún así te interesa y te lo envío a tu mail. Y pues si puedes mejorar el detalle de los números 8 y 9 te agradecería, tu sabes 2 cabezas piensan mejor que 1 jejejeje

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar