2016-07-20 24 views
5

mam 180 linii w pliku tekstowym i chcesz przeczytać co 20 wierszy (1-20, 21-40 ...)Jak odczytać co 20 linii z pliku tekstowego za pomocą vbscript?

Tu jest mój bieżący kod:

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

Lepiej odfiltrować wymagane linie, a następnie załadować cały plik do pamięci. – Lankymart

+0

ok ... mogę odczytać pierwsze 20 wierszy pliku tekstowego. jak mam przejść do następnych 20 linii i tak dalej, aż plik się skończy ..... jak mam go zapętlić? –

Odpowiedz

3

Oto jak ja” d podejść do problemu. Ten kod ustawia liczbę linii, które mają być odczytywane w czasie, a następnie otwiera plik do odczytu i ustawia tablicę. Mimo że nie skończyliśmy czytać pliku, dodajemy do niego linię do myArray.

Kiedy trafiamy na wielokrotność 20 linii przeczytanych, informujemy o tym i robimy, co trzeba, z tymi 20 liniami (w moim przypadku, właśnie wysłałem je na ekran, oddzielone średnikami).

Następnie resetujemy tablicę, aby była pusta ponownie i powtarzamy, aż cały plik zostanie odczytany, a następnie wyprowadzamy końcową partię linii (w przeciwnym razie zostaną one zignorowane, ponieważ robimy tylko coś z partiami o wartości 20 w przykładzie).

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

do użycia 'Mod' +1 – Lankymart