En batch, esto puede resultar muy complicado, por no decir imposible (por lo que, ni me he complicado ), pero en *.vbs, esto resulta mucho más fácil..... así que he creado el siguiente script....
Este no solo revisa la línea siguiente, como planteaba Shinseiki86, sino que revisa todas y cada una de las líneas, por lo que, para un archivo de 3000 líneas(se planteaba en el caso original), el script realiza unas 4500000 comparaciones, en menos de un minuto (Pentium IV, 1 Gb de ram), una vez terminado, vuelca las líneas repetidas en un archivo (creado en los temporales) y lo ejecuta para su visualización.
Durante el proceso se verán mensajes del progreso (simples popup), los cuales avisaran cada 10%
Esta la posibilidad de hacer un script más vistoso, en el cual, en lugar de los popup se muestre una barra de progreso creada en iexplorer, pero el kaspersky lo detecta como amenaza porque se intenta crear algo con el iexplorer
En definitiva.... este es el script (creado en un rato de distracción en el curro XD)
Código:
set objfso = createobject("scripting.filesystemobject")
set objshell = createobject("wscript.shell")
set archivo = objfso.opentextfile("c:\origen.txt",1)
archivo.readall
lineast = archivo.line
archivo.close
upro = 0
for n = 1 to lineast - 1
set archivo = objfso.opentextfile("c:\origen.txt",1)
if n > 1 then
for e = 1 to n - 1
archivo.skipline
next
end if
lineaa = archivo.line
primeral = archivo.readline
for i = 1 to lineast - lineaa
segundal = archivo.readline
if segundal = primeral and instr(1,registro,segundal,1) = 0 then
registro = registro & segundal & ";"
exit for
end if
next
archivo.close
pro = int((100/lineast)*n)
if pro <> upro and int(pro/10) = (pro/10) then
progreso = objshell.popup(pro & "%",1,"Progreso...")
objshell.AppActivate "Progreso..."
upro = pro
end if
next
set destino = objfso.createtextfile(objfso.getspecialfolder(2) & "\resultado.txt",true)
renglones = split(registro,";")
for each r in renglones
destino.writeline r
next
msgbox "Proceso terminado..."
objshell.run objfso.getspecialfolder(2) & "\resultado.txt"
El archivo de origen (el que tiene las líneas a compar) debe de estar en c:\origen.txt), como ejemplo, un archivo con el siguiente texto...
2008-06-19_590059_NI_890807898_EPS018_86_I.TXT
2008-06-19_621451_NI_890706425_EPS018_86_I.TXT
2008-06-19_621451_NI_890706425_EPS018_86_I.TXT
2008-06-19_621452_NI_890706425_EPS018_86_I.TXT
2008-06-19_621517_NI_810001583_EPS018_86_I.TXT
2008-06-20_102019121_CC_94487480_EPS018_51_I.TXT
2008-06-20_102019121_CC_94487480_EPS018_51_I.TXT
2008-06-20_102088573_CC_5931385_EPS018_01_I.TXT
2008-06-20_102718305_CC_33966379_EPS018_01_I.TXT
2008-06-20_102718305_CC_33966379_EPS018_01_I.TXT
2008-06-20_103000920_CC_31992855_EPS018_01_I.TXT
2008-06-20_103000920_CC_31992855_EPS018_01_I.TXT
2008-06-20_103161002_CC_16638978_EPS018_01_I.TXT
Arrojaría como resultados, un archivo con esto....
2008-06-19_621451_NI_890706425_EPS018_86_I.TXT
2008-06-20_102019121_CC_94487480_EPS018_51_I.TXT
2008-06-20_102718305_CC_33966379_EPS018_01_I.TXT
2008-06-20_103000920_CC_31992855_EPS018_01_I.TXT
(son los que se ven marcados en rojo arriba, y que en definitva están repetidos)
Bueno, eso es todo, en definitiva, un code más para que pueda servir como ejemplo, y quizás le sirva a Shinseiki86
Mensaje original donde se plantea la consulta
Saludos
P.D1: el code queda más legible si lo pongo entre etiquetas GeSHi, pero a la hora de copiar el code en el notepad se desordena todo
P.D2:También pongo este code por separado del original porque la consulta era en batch, y para no mezclar el post de Programación BATCH Avanzada. (nuevo) con *.vbs