Ms-Dos - ordenadacion por nombre compleja

 
Vista:

ordenadacion por nombre compleja

Publicado por bego (2 intervenciones) el 08/04/2008 16:15:20
Hola Antoni

Muchas gracias por tu respuesta....

He estado haciendo pruebas y bueno...tengo un problema con la ordenación, podrias ayudarme?

Te cuento: un ejemplo de los ficheros que tengo que ordenar es

codigo_04042008_131932.z
codigo_04042008_170314.txt
codigo_04012008_170408.xc
codigo_04042007_170455.txt
codigo_04042008_170455.doc

donde los números representan DDMMYYYY_HHMMSS(la extensión del fichero me da igual)

tengo que ordenarlo por DDMMYYYY_HHMMSS por fecha

¿Cómo prodria hacerlo?
Porque usando la opción /+12 del comando sort me lo sigue tratando como texto y me falla la ordenación por fecha

Muchas gracias por todo

Un saludo
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:ordenadacion por nombre compleja

Publicado por Antoni Masana (295 intervenciones) el 09/04/2008 09:08:47
Hay varias formas de hacerlo. Una seria utilizando comandos externos y la sintaxis sera asi

DIR codigo*.* /B | AWK-f FILE.AWK | SORT | CUT -c15-99 > resultado

Necesitas ek MAWK.EXE y el CUT.EXE y crear FILE.AWK

FILE.AWK

' { AA=substr($0,12,4)
MM=substr($0,10,2)
DD=substr($0, 8,2)
HH=substr($0,17,6)

printf("%s%s%s%s %s ", AA, MM, DD, HH, $0)
}
'

Como las PIPAS "|" a veces fallan esto es más seguro:

DIR codigo*.* /B >temp-1
AWK -f FILE.AWK <temp-1 >temp-2
SORT <temp-2 >temp-3
CUT -c15-99 <temp-3 >resultado
DEL temp-?

La web para bajar los programas es: http://openetwork.com/berk.html

--------------------------------------------------------------------------------

La otra es más compleja de escribir y seria algo asi

BAT - 1 -- BEGO.BAT

@echo off
if exist temp-? del del temp-?
dir codi*.* /B >temp-1
for /F %%a in (temp-1) do call bego-2 %%a
sort <temp-2 >temp-3
for /F %%a in (temp-3) do call bego-3 %%a
type temp-4
del temp-4

-----------------------------------------------------------------

BAT - 2 -- BEGO-2.BAT

@echo off
set file=%1
set AA=%file:~11,4%
set MM=%file:~ 9,2%
set DD=%file:~ 7,2%
set HH=%file:~16,6%
echo %AA%%MM%%DD%%HH%%File% >>temp-2

-----------------------------------------------------------------

BAT - 3 -- BEGO-3.BAT

@echo off
set file=%1
set AA=%file:~14,99%
echo %AA% >>temp-4

Se puede hacer con un solo BAT pero esa es otra historia
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