loops - predefinidas - hola mundo en vbscript
¿Cómo leo un archivo línea por línea en VB Script? (2)
Tengo lo siguiente para leer un archivo línea por línea:
wscript.echo "BEGIN"
filePath = WScript.Arguments(0)
filePath = "C:/Temp/vblist.txt"
Set ObjFso = CreateObject("Scripting.FileSystemObject")
Set ObjFile = ObjFso.OpenTextFile(filePath)
StrData = ObjFile.ReadLine
wscript.echo "END OF FIRST PART"
Do Until StrData = EOF(ObjFile.ReadLine)
wscript.echo StrData
StrData = ObjFile.ReadLine
Loop
wscript.echo "END"
La función EOF()
no parece funcionar:
C:/Users/EGr/Documents/Scripts/VB>cscript testloop.vbs ArgVal
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.
BEGIN
END OF FIRST PART
C:/Users/EGr/Documents/Scripts/VB/testloop.vbs(11, 1) Microsoft VBScript runti
me error: Type mismatch: ''EOF''
No he programado en VB antes, pero estoy tratando de resolver los bucles para poder modificar un script de VB que me haya sido entregado. Quiero leer un archivo línea por línea y hacer algo con cada línea. Si cambio el ciclo Do Until a Do Until StrData = EOF
, funciona pero arroja un error cuando llega al final del archivo:
C:/Users/EGr/Documents/Scripts/VB>cscript testloop.vbs ThisRANDOMValue
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.
BEGIN
1
END OF FIRST PART
host1
host2
host3
C:/Users/EGr/Documents/Scripts/VB/testloop.vbs(13, 2) Microsoft VBScript runti
me error: Input past end of file
Siento que probablemente haya una solución fácil, pero no he podido encontrarla. He intentado algunas otras soluciones que he encontrado en línea, pero no he llegado tan cerca como lo anterior.
En caso de duda, lea la documentación :
filename = "C:/Temp/vblist.txt"
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(filename)
Do Until f.AtEndOfStream
WScript.Echo f.ReadLine
Loop
f.Close
Si alguien como yo está buscando leer solo una línea específica, por ejemplo, solo la línea 18 aquí es el código:
filename = "C:/log.log"
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(filename)
For i = 1 to 17
f.ReadLine
Next
strLine = f.ReadLine
Wscript.Echo strLine
f.Close