2016-07-20 8 views
5

私は、テキストファイル内の180行を持っており、すべての20本のライン読みたい(1-20、21-40を...)vbscriptを使ってテキストファイルから20行ごとに読み込む方法は?

ここに私の現在のコードされています

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

ファイル全体をメモリに読み込むのではなく、必要な行をストリーミングする方がよいでしょう。 – Lankymart

+0

ok ...私はテキストファイルの最初の20行を読むことができます。どのように私は次の20行のために行く必要がありますまでファイルが終了.....どのように私はそれをループする必要があります –

答えて

3

は、ここで私は「方法です問題に近づきます。このコードは、一度に読み込まれる行数を最初に設定し、読み込み用にファイルを開き、配列を設定します。ファイルの読み込みが完了していない間に、そのファイルの行をmyArrayに追加します。

私たちが読んだ20行の倍数を読んだとき、私たちはそれを報告し、それらの20行で私たちが必要とするものを実行します(私の場合は、画面にセミコロンで区切っています)。

次に、配列が空になるようにリセットして、すべてのファイルが読み込まれるまで繰り返すと、最終行の行が出力されます(そうでなければ無視されます)。例では20個のバッチ)。

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

'Mod' +1の使用 – Lankymart

関連する問題