2013-03-20 14 views
12

Ho il seguente per leggere un file riga per riga:Come si legge un file riga per riga in VB Script?

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 funzione EOF() non sembra funzionare:

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' 

non ho programmato in VB prima, ma io' Sto cercando di capire i loop in modo da poter modificare uno script VB che ho ricevuto. Voglio leggere un file riga per riga e fare qualcosa con ogni riga. Se cambio il ciclo Do Until per Do Until StrData = EOF, funziona ma genera un errore quando si arriva alla fine del file:

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 

Mi sento come se non v'è probabilmente una soluzione facile, ma io non sono stato in grado per trovarlo Ho provato alcune altre soluzioni che ho trovato online, ma non mi sono avvicinato quanto sopra.

risposta

23

In caso di dubbio, leggere il 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

Grazie! Per curiosità, questo è visivo di base, corretto? Quando provo a fare qualcosa come 'Dim TestString As String =" Guarda questi! "' Genera un errore per "fine attesa dell'istruzione" – EGr

+4

È VBScript, non VB. Il primo non supporta le dichiarazioni variabili del modulo 'Dim variable As type'. Basta usare 'Dim variable' senza un tipo per dichiarare le variabili in VBScript. –

+0

Ci scusiamo per tutte le domande, ma sono entrambi i file .vb e .vbs VBScript? Ho entrambi i tipi di file. – EGr

0

Se qualcuno come me sta cercando di leggere solo una linea specifica, ad esempio unica linea 18 ecco il codice:

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