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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Cargar fichero TXT y asignarle a cada linea, una variable. -- VBS --
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Cargar fichero TXT y asignarle a cada linea, una variable. -- VBS --  (Leído 6,836 veces)
Cascuda

Desconectado Desconectado

Mensajes: 6



Ver Perfil
Cargar fichero TXT y asignarle a cada linea, una variable. -- VBS --
« en: 20 Junio 2015, 10:45 am »

Llevo  ya unas semanas dándole vueltas, pero no soy capaz de desarrollar la idea que tengo en mente.
Lo que estaba pensando, era leer un archivo TXT y a partir de ahi, sacar de cada linea el nombre de la variable y su valor.

Ejemplo de fichero TXT
Código
  1. site = espanha
  2. lugar= madrid
  3. so = win7
  4. ie = ie9
  5. puesto = 11
  6.  


Donde he llegado sin problema, es leer el nombre de la variable y luego lo que continua "su valor" asi en todas, hasta llegar a la ultima. Pero luego. lo que no he sido capaz de desarrollar. es que me cargue esas variables en el VBS para luego hacer consultas o condiciones o etc...

Código
  1. Const ForReading = 1
  2. Set fso = CreateObject("Scripting.FileSystemObject")
  3. Set ts = fso.OpenTextFile("prueba.txt", ForReading)
  4.  
  5. Do Until ts.AtEndOfStream
  6. strNextLine = ts.Readline
  7. arrServiceList = Split(strNextLine , "=")
  8.  
  9. Msgbox arrServiceList(o)
  10. For i = 1 to Ubound(arrServiceList)
  11. Msgbox arrServiceList(i)
  12. Next
  13. Loop
  14.  


Si me podéis orientar como seguir, ya que mi mente se quedo bloqueada, os lo agradeceria.

Un saludo, Cascuda


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: Cargar fichero TXT y asignarle a cada linea, una variable. -- VBS --
« Respuesta #1 en: 20 Junio 2015, 18:37 pm »

El planteamiento de tú código es incorrecto, ¿qué ocurre si por ejemplo el valor de una de las variables contiene un símbolo "="?.

Aquí te escribo este ejemplo para crear variables dinámicamente.
Código
  1. Option explicit : Dim file, curLine, curIndex, _
  2.                      varPreffix, varName, varValue
  3.  
  4. ' Defino un prefijo para el nombre de las variabes dinámicas.
  5. varPreffix = "var"
  6.  
  7. ' Instancio el Stream del objeto que lee el archivo de texto.
  8. Set file = CreateObject("Scripting.FileSystemObject"). _
  9.                        OpenTextFile("Archivo.txt", 1)
  10.  
  11. ' Itero las lineas del archivo.
  12. Do Until file.AtEndOfStream
  13.  
  14.    curIndex = (curIndex + 1)
  15.    curLine  = file.Readline
  16.  
  17.    ' varName  = Trim(Mid(curLine, 1, InStr(curLine, "=") - 1))
  18.    varValue = Trim(Mid(curLine,    InStr(curLine, "=") + 1))
  19.  
  20.    ' Creo la variable dinamicamente.
  21.    ExecuteGlobal varPreffix & curIndex & "=" & """" & varValue & """"
  22.  
  23.    ' Muestro el nombre de la variable y el valor.
  24.    Execute "WSCript.Echo varPreffix & curIndex & ""="" & " & varPreffix & curIndex
  25.  
  26.    ' En resumen, para acceder mediante un índice:
  27.    ' ExecuteGlobal "WScript.Echo " & varPreffix & curIndex
  28.  
  29. Loop
  30.  
  31. ' Cierro el Stream.
  32. file.Close()
  33.  
  34. WScript.Quit(0)

Resultado de ejecución:
Código:
Cscript.exe /NoLogo "Archivo.vbs"

var1=espanha
var2=madrid
var3=win7
var4=ie9
var5=11

Saludos


« Última modificación: 20 Junio 2015, 18:39 pm por Eleкtro » En línea



Cascuda

Desconectado Desconectado

Mensajes: 6



Ver Perfil
Re: Cargar fichero TXT y asignarle a cada linea, una variable. -- VBS --
« Respuesta #2 en: 21 Junio 2015, 10:56 am »

Muchas gracias Electro,

Realmente discrimine el =, ya que sabia que ningún de los valores asignados por ahora, iban a serlo. Pero muy bien pensado. Ya que nunca sabes cuando realmente puede ser, que  eso suceda.

He usado tu ejemplo, pero lo he modificado a mis necesidades. Ya que prefiero usar las variables con el nombre que me muestra en el TXT, en vez que me cargue dinamicamente un prefijo. Aun que realmente, ya lo habías definido usted en el codigo y solo tuve que modificar las cadenas.

Un saludo, Cascuda

En línea

Cascuda

Desconectado Desconectado

Mensajes: 6



Ver Perfil
Re: Cargar fichero TXT y asignarle a cada linea, una variable. -- VBS --
« Respuesta #3 en: 21 Junio 2015, 11:07 am »

No me he dado cuenta, pero pego el código modificado. Por si alguien quiere ver lo simples cambios que he hecho.

Código
  1. Option explicit : Dim file, curLine, curIndex, _
  2.                      varName, varValue
  3.  
  4. ' Instancio el Stream del objeto que lee el archivo de texto.
  5. Set file = CreateObject("Scripting.FileSystemObject"). _
  6.                        OpenTextFile("prueba.txt", 1)
  7.  
  8. ' Itero las lineas del archivo.
  9. Do Until file.AtEndOfStream
  10.  
  11.  
  12.    curLine  = file.Readline
  13.  
  14.    varName  = Trim(Mid(curLine, 1, InStr(curLine, "=") - 1))
  15.    varValue = Trim(Mid(curLine,    InStr(curLine, "=") + 1))
  16.  
  17.    ' Creo la variable dinamicamente.
  18.    ExecuteGlobal varName & "=" & """" & varValue & """"
  19.  
  20.    ' Muestro el nombre de la variable y el valor.
  21.    Execute "WSCript.Echo varName & ""="" & " & varName
  22.  
  23. Loop
  24.  
  25. ' Cierro el Stream.
  26. file.Close()
  27.  
  28. 'Verifico que realmente funciona.
  29. Msgbox "funciona (" & site & ")"
  30. Msgbox "funciona (" & consolide & ")"
  31. Msgbox "funciona (" & consolidante & ")"
  32.  
  33.  
  34. WScript.Quit(0)
  35.  

En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines