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

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Ayuda para comparar dos archivos txt y extraer el contenido de uno de ellos??
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda para comparar dos archivos txt y extraer el contenido de uno de ellos??  (Leído 1,437 veces)
valeeen

Desconectado Desconectado

Mensajes: 46


Ver Perfil
Ayuda para comparar dos archivos txt y extraer el contenido de uno de ellos??
« en: 14 Julio 2015, 16:41 pm »

Hola amigos!!! tengo un problemilla... tenia este script en vbs que me servia para extraer el hostname de un equipo y meterlo como una variable en WinPE

Código:
Function UserExit(sType, sWhen, sDetail, bSkip)
oLogging.CreateEntry "entered UserExit ", LogTypeInfo
UserExit = Success
End Function

Function GetOfflineComputername()
On Error Goto 0

If oEnvironment.Item("OSVERSION")="WinPE" Then
Dim CompName : CompName = ""
Dim ret, sOldSystem : sOldSystem = ""
For Each drv In Array("C", "D", "E", "F")
If ofso.FileExists(drv & ":\windows\system32\config\system") Then
sOldSystem = drv & ":\windows\system32\config\system"
Exit For
End If
Next
oLogging.CreateEntry "Mounting Offline registry " & sOldSystem, LogTypeInfo
ret = oShell.Run ("reg load HKLM\z " & sOldSystem, 0, True)
If ret = 0 Then
CompName = oShell.RegRead("HKLM\z\ControlSet001\Services\Tcpip\Parameters\Hostname")
If CompName <> "" Then
oLogging.CreateEntry "Found old computername '" & CompName & "'", LogTypeInfo
Else
oLogging.CreateEntry "Old computername name could not be found", LogTypeWarning
End If
Else
oLogging.CreateEntry "Could not mount offline registry " & sOldSystem, LogTypeWarning
End If
oShell.Run "REG UNLOAD HKLM\Z", 0, True
Else
CompName = oShell.ExpandEnvironmentStrings("%Computername%")
End If

GetOfflineComputername = CStr(CompName)

End Function

Este me funciona perfectamente, peeeeero ahora necesito hacer lo siguiente...

Tengo un numero o nombre en un txt, solo ese número (ejemplo: AAAA0001)

En otro archivo txt tengo el siguiente esquema:

AAAA0001#BBBB0001#CCCC0001#DDDD0001
EEEE0001#FFFF0001#GGGG0001#HHHH0001

Así muchas lineas... tengo que comprobar en que linea esta el contenido del primer TXT y después quedarme SOLO con el segundo valor (BBBB0001) y guardarlo en una variable (o meterlo en el script de arriba de alguna manera fijo)....

Hasta ahora lo que he conseguido es esto:

Código:
dim oshell
dim fich, fs, fich2, ncx, linea

'ubicación de ficheros
nombre_fich="c:\fichero1.txt"
nombre_fich2="c:\fichero2.txt"

set oshell=createobject("WScript.shell")
set fs=createobject("scripting.FileSystemObject")

'comprobamos que existan los ficheros
if not fs.FileExists(nombre_fich) then
  wscript.echo "no existe el fichero "& nombre_fich
  WScript.Quit 4
end if

if not fs.FileExists(nombre_fich2) then
  wscript.echo "no existe el fichero "& nombre_fich2
  WScript.Quit 4
end if

'Si hemos llegado hasta aquí es que existe y lo abrimos
set fich=fs.OpenTextFile (nombre_fich, 1, "True" )

' Almacenamos en la variable linea el contenido de fichero1
Do While fich.atEndOfStream <> True
  linea=fich.ReadLine
' Ahora mostramos la línea leída
  wscript.echo linea
Loop

set fich2=fs.OpenTextFile (nombre_fich2, 1, "True" )

Do While fich2.atEndOfStream <> True
  linea2=fich2.ReadLine
' Ahora mostramos la línea leída
  wscript.echo linea2
' Parseamos los campos
  campos = split(linea2,"#")
  for each b in campos
    wscript.echo "valor del campo: "&b
  next
Loop

wscript.echo linea
wscript.echo linea2

fich.close

Vale, consigo imprimir la linea del fichero1 y ademas imprimir todo el fichero2, pero me he quedado estancado jeje.

Me ayudáis??

Muchas gracias!!

Un saludo


« Última modificación: 14 Julio 2015, 16:43 pm por valeeen » En línea

pkj

Desconectado Desconectado

Mensajes: 59



Ver Perfil
Re: Ayuda para comparar dos archivos txt y extraer el contenido de uno de ellos??
« Respuesta #1 en: 14 Julio 2015, 17:50 pm »

Supongo que solo te falta añadir una linea para conseguir el valor que buscas.
Algo así en esta zona:

Código
  1. Do While fich2.atEndOfStream <> True
  2.  linea2=fich2.ReadLine
  3. ' Ahora mostramos la línea leída
  4.  wscript.echo linea2
  5. ' Parseamos los campos
  6.  campos = split(linea2,"#")
  7.  for each b in campos
  8.    wscript.echo "valor del campo: "&b
  9.  next
  10.  
  11.  if campos(0)=linea then valorbuscado=campos(1): exit do
  12.  
  13. Loop
  14.  
  15. wscript.echo linea
  16. wscript.echo linea2
  17.  
  18. wscript.echo valorbuscado
  19.  
  20.  

Saludos


En línea

valeeen

Desconectado Desconectado

Mensajes: 46


Ver Perfil
Re: Ayuda para comparar dos archivos txt y extraer el contenido de uno de ellos??
« Respuesta #2 en: 14 Julio 2015, 18:06 pm »

Supongo que solo te falta añadir una linea para conseguir el valor que buscas.
Algo así en esta zona:

Código
  1. Do While fich2.atEndOfStream <> True
  2.  linea2=fich2.ReadLine
  3. ' Ahora mostramos la línea leída
  4.  wscript.echo linea2
  5. ' Parseamos los campos
  6.  campos = split(linea2,"#")
  7.  for each b in campos
  8.    wscript.echo "valor del campo: "&b
  9.  next
  10.  
  11.  if campos(0)=linea then valorbuscado=campos(1): exit do
  12.  
  13. Loop
  14.  
  15. wscript.echo linea
  16. wscript.echo linea2
  17.  
  18. wscript.echo valorbuscado
  19.  
  20.  

Saludos



Gracias pkj, te refieres a esta no?

Código:
if campos(0)=linea then valorbuscado=campos(1): exit do

para cambiar la función del primer script, y ajustarlo con lo del segundo seria algo así?

Código:
Function UserExit(sType, sWhen, sDetail, bSkip)
oLogging.CreateEntry "entered UserExit ", LogTypeInfo
UserExit = Success
End Function

Function GetOfflineComputername()
On Error Goto 0

If oEnvironment.Item("OSVERSION")="WinPE" Then
Dim CompName : CompName = ""
Dim oshell
Dim fich, fs, fich2, ncx, linea
'ubicación de ficheros
nombre_fich="c:\fichero1.txt"
nombre_fich2="c:\fichero2.txt"

set oshell=createobject("WScript.shell")
set fs=createobject("scripting.FileSystemObject")

'comprobamos que existan los ficheros
if not fs.FileExists(nombre_fich) then
wscript.echo "no existe el fichero "& nombre_fich
WScript.Quit 4
end if

if not fs.FileExists(nombre_fich2) then
wscript.echo "no existe el fichero "& nombre_fich2
WScript.Quit 4
end if

'Si hemos llegado hasta aquí es que existe y lo abrimos
set fich=fs.OpenTextFile (nombre_fich, 1, "True" )

' Almacenamos en la variable linea el contenido de fichero1
Do While fich.atEndOfStream <> True
linea=fich.ReadLine
Loop

set fich2=fs.OpenTextFile (nombre_fich2, 1, "True" )

Do While fich2.atEndOfStream <> True
linea2=fich2.ReadLine

' Parseamos los campos
campos = split(linea2,"#")
for each b in campos
next
if campos(0)=linea then valorbuscado=campos(1): exit do
Loop

fich.close


CompName = valorbuscado

GetOfflineComputername = CStr(CompName)

End Function

He quitado los echo porque no me interesa para el script, pero si para comprobar que funciona fuera jeje.

Muchas gracias por la ayuda!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
manejo de datos, comparar cadenas, borrar un contenido de una cadena
Programación Visual Basic
-Xenon- 5 4,037 Último mensaje 20 Enero 2006, 14:49 pm
por -Xenon-
Extraer contenido de una tabla de otra web « 1 2 »
PHP
javirk 13 7,357 Último mensaje 5 Mayo 2012, 17:06 pm
por javirk
Comparar 2 archivos txt y ejecutar accion si el contenido es distinto
Scripting
erikanasarre 1 2,937 Último mensaje 13 Febrero 2013, 15:56 pm
por erikanasarre
ePedido de programa para Extraer archivos de correos WinMail
Software
adrimar66 0 645 Último mensaje 21 Diciembre 2013, 07:15 am
por adrimar66
Extraer Contenido de Txt BAT
Scripting
Blender123 3 2,933 Último mensaje 5 Septiembre 2014, 19:20 pm
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines