2016-07-20 11 views
5

Ich habe 180 Zeilen in einer Textdatei und möchte alle 20 Zeilen (1-20, 21-40 ...)Wie liest man alle 20 Zeilen aus einer Textdatei mit VBScript?

Hier ist mein aktueller Code lesen:

Const ForReading = 1 

Set objFSO = CreateObject("Scripting.FileSystemObject") 

Set objTextFile = objFSO.OpenTextFile("C:\Bess_Automation\EditFiles\TSTVLD1.txt", ForReading) 

'Reading the count of lines 
objTextFile.ReadAll 
strLinecount=objTextFile.Line 
msgbox strLinecount 

strnumoftimes=Round((strLinecount/20),0) 
msgbox strnumoftimes 
+2

Sie wären besser dran, die erforderlichen Zeilen zu streamen, anstatt die gesamte Datei in den Speicher zu laden. – Lankymart

+0

ok ... ich kann die ersten 20 Zeilen der Textdatei lesen. Wie sollte ich für die nächsten 20 Zeilen gehen und so weiter, bis die Datei endet ..... wie soll ich es –

Antwort

3

Hier ist, wie ich d Nähern Sie sich dem Problem. Dieser Code legt die Anzahl der Zeilen fest, die zu einem bestimmten Zeitpunkt gelesen werden sollen, öffnet dann die zu lesende Datei und richtet ein Array ein. Während wir die Datei noch nicht fertig gelesen haben, fügen wir eine Zeile davon zu myArray hinzu.

Wenn wir ein Vielfaches von 20 Zeilen gelesen haben, melden wir dies und tun, was immer wir brauchen, mit diesen 20 Zeilen (in meinem Fall habe ich sie einfach durch Semikolons auf dem Bildschirm angezeigt).

Dann setzen wir das Array wieder leer und wiederholen, bis die ganze Datei gelesen wurde, und geben dann den letzten Zeilenstapel aus (sonst würden sie ignoriert, da wir im Beispiel nur Chargen von 20 machen)).

Option Explicit 

Const LINES_TO_READ = 20 
Dim iLines, iTotalLines 
Dim oFso : Set oFso = CreateObject("Scripting.FileSystemObject") 
Dim oFile : Set oFile = oFso.OpenTextFile("C:\temp\mytextfile.txt", 1) 
Dim myArray() 
ReDim myArray(0) 
iLines = 0 
iTotalLines = 0 
While Not oFile.AtEndOfStream 
    myArray(UBound(myArray)) = oFile.ReadLine 
    iLines = iLines + 1 
    ReDim Preserve myArray(UBound(myArray)+1) 
    If iLines Mod LINES_TO_READ = 0 Then 
     WScript.Echo iLines & " read now." 
     ' do anything you like with the elements of myArray here before we reset it to empty 
     WScript.Echo Join(myArray, ";") 
     ' reset array to be totally empty again 
     ReDim myArray(0) 
    End If 
Wend 
WScript.Echo "Final Lines: " & Join(myArray, ";") 
WScript.Echo "Total lines in file: " & iLines 
+0

für die Verwendung von 'Mod' +1 Schleife – Lankymart

Verwandte Themen