web-dev-qa-db-fra.com

Comment lire un fichier ligne par ligne dans VB Script?

J'ai ce qui suit pour lire un fichier ligne par ligne:

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 fonction EOF() ne semble pas fonctionner:

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'

Je n'ai pas programmé dans VB auparavant, mais j'essaie de trouver des boucles pour pouvoir modifier un script VB qui m'a été remis). Je veux lire un fichier ligne par ligne et faire quelque chose avec chaque ligne. Si je change la boucle Do Until en Do Until StrData = EOF, Cela fonctionne mais génère une erreur quand il arrive à la fin du fichier:

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

J'ai l'impression qu'il y a probablement une solution facile, mais je n'ai pas pu la trouver. J'ai essayé quelques autres solutions que j'ai trouvées en ligne, mais je n'ai pas été aussi proche que ci-dessus.

18
EGr

En cas de doute, lisez la documentation :

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
31
Ansgar Wiechers

Si quelqu'un comme moi cherche à lire uniquement une ligne spécifique, par exemple uniquement la ligne 18, voici le code:

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
2
emirjonb