2013-03-20 15 views
12

Mam następujący odczytać pliku linia po linii:Jak czytać wiersz po wierszu w Skrypcie VB?

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" 

Funkcja EOF() nie wydają się działać:

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' 

Nie zaprogramowany w VB przed, ale I” Próbuję wymyślić pętle, aby zmodyfikować skrypt VB, który mi przekazano. Chcę czytać plik wiersz po linii i zrobić coś z każdą linią. Jeśli zmienię pętlę Do Until do Do Until StrData = EOF, to działa, ale zgłasza błąd, gdy dojdzie do końca pliku:

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 

czuję się jak tam jest chyba proste rozwiązanie, ale nie byli w stanie znaleźć to. Wypróbowałem kilka innych rozwiązań, które znalazłem w Internecie, ale nie są tak bliskie jak powyższe.

Odpowiedz

23

W razie wątpliwości przeczytaj 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 
+0

Dzięki! Z ciekawości jest to wizualne, poprawne? Kiedy próbuję zrobić coś takiego jak "Dim TestString As String =" Spójrz na te! "' Rzutuje błąd dla "oczekiwanego zakończenia instrukcji". – EGr

+4

To VBScript, a nie VB. Ten pierwszy nie obsługuje deklaracji zmiennych w postaci 'Zmienna zmienna Jako typ'. Po prostu używaj 'Zmiennej zmiennej' bez typu do deklarowania zmiennych w VBScript. –

+0

Przepraszamy za wszystkie pytania, ale oba są plikami .vb i .vbs VBScript? Mam oba typy plików. – EGr

0

Jeśli ktoś tak jak ja szuka czytać tylko konkretną linię, przykład tylko linia 18 oto kod:

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 
Powiązane problemy