elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


  Mostrar Temas
Páginas: 1 ... 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [21]
201  Programación / Scripting / Comparar líneas VBS en: 30 Junio 2008, 17:28 pm
Buenas, una vez más, estaba viendo la solución a uno de los problemas planteados en batch, en este caso es el de Shinseiki86, que quería comparar líneas en un archivo de texto, y que las que estuviesen repetidas, fueran volcadas a un otro archivo de texto a modo de registro....

En batch, esto puede resultar muy complicado, por no decir imposible (por lo que, ni me he complicado :rolleyes:), 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%  :P

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  :P (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 ;D

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  :P
202  Programación / Scripting / Cronometro en VBS :p en: 27 Junio 2008, 22:42 pm
Buenas...

Simplemente la idea se me ha ocurrido al ver el mensaje de Dirpok, en el que se intenta crear un cronometro en batch....pero como a mi me gusta más vbscript, porque me parece que da más posibilidades, he creado el mio en este lenguaje  ;D

El cronometro pide un nombre de usuario, sin el que no se pude comenzar, luego de eso queda a la espera de que se presione aceptar en un mensaje, una vez que se acepta, comienza el conteo  :P, al terminar avisa de cuanto tiempo se ha demorado (igualmente lo va haciendo a medida que van pasando los segundos)
Al dar aceptar nuevamente termina de contar, y guarde registro de la fecha y hora actual, así como el usuario, y su tiempo en un registro (C:\ranking.txt), y abre el archivo que contiene el ranking para que pueda verse  :P

A ver que les parece....

Código
  1. set objshell = createobject("wscript.shell")
  2. set objfso = createobject("scripting.filesystemobject")
  3. set ranking = objfso.opentextfile("C:\ranking.txt",8,true)
  4. do
  5. usuario = inputbox("Ingresa tu nombre por favor...")
  6. if usuario <> "" then
  7. exit do
  8. else
  9. msgbox "Debes de ingresar un nombre de usuario para continuar..."
  10. end if
  11. loop
  12. msgbox "Presiona aceptar para comenzar el conteo..."
  13. empieza = time()
  14. mensaje = -1
  15. do while mensaje = -1
  16. tiempo = datediff("s",empieza,time())
  17. mensaje =  objshell.popup(tiempo,1,"Cronometro")
  18. loop
  19.  
  20. ranking.writeline now() & chr(9) & usuario & chr(9) & "...." & tiempo & "seg."
  21. ranking.close
  22.  
  23. msgbox "El tiempo insumido a sido de " & tiempo & " segundos"
  24. objshell.run "C:\ranking.txt"

Creo que me ha quedado bastante bien  :rolleyes:

Mensaje original de donde saqué la idea

Cronometro en BATCH

Saludos
203  Foros Generales / Sugerencias y dudas sobre el Foro / Usuarios en el foro en: 20 Junio 2008, 15:52 pm
Se ha hecho alguna modificación en el foro con respecto al anonimato por decirlo así.....

Es que antes cuando alguien ingresaba a un subforo, o a un post, se veía en el encabezado, nombres de usuarios, y una frase de cuantos visitantes estaban viendo eso, pero ahora ya no esta... me refiero a esto

Antes:
YaTamas, novlucker y 6 Visitantes están viendo este foro. (o algo así)

Ahora
2 Usuarios y 6 Visitantes están viendo este foro.

Es que resultaba útil en muchas ocasiones  :-\

Saludos
Páginas: 1 ... 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [21]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines