0

タブが削除されたファイルを、同様のヘッダーを持つ断片に分割しようとしています。私は自分の論理を整えています。ただし、入力ファイルを1行ずつ読み取って別のファイルに書き込もうとしています。出力ファイルを開くと、データが含まれていません。これが私のコードです。

ここで何がうまくいかないのか、誰かが私を助けることができますか?

注: 以下のコードには、ファイルを分割する実際のロジックは含まれていません。

Wscript.Echo "Begin"
InputFile = "test.txt"
Set InputFSO = CreateObject("Scripting.FileSystemObject")
Set InputFileObject = InputFSO.OpenTextFile(InputFile)

HeaderLine = InputFileObject.ReadLine

Do While InputFileObject.AtEndOfStream <> True
    strTemp = InputFileObject.SkipLine
Loop 

TotalLines = InputFileObject.Line-1

Set OutputFSO = CreateObject("Scripting.FileSystemObject")
Set OutputFileObject = OutputFSO.CreateTextFile("out.txt")

#Code for reading line by line and writing it to another file
Do While not InputFileObject.AtEndOfStream
    line = InputFileObject.Readline
    OutputFileObject.WriteLine(line)
Loop

Set InputFileObject = Nothing
Set OutputFileObject = Nothing
Wscript.Echo "Completed"
4

1 に答える 1

0

行数を取得しようとしているときに、最初の Do ループで入力ファイル全体をループしています。そのため、2 番目の Do ループに到達した時点で、InputFileObject は既に "AtEndOfStream" になっています。したがって、2 番目のループ内のコードは実行されません。

最初の Do ループを削除し、もう一方のループの最後にあるファイル内の行を数えることを検討してください (実際のプログラムで最初のループのロジックが必要な場合を除きますか?)。

別の方法は、入力ファイルを閉じてから再度開くことです。この場合の問題は、ファイルを 2 回読み取ってしまうことです。

'Close and reopen the file from the top...
InputFileObject.Close
Set InputFileObject = InputFSO.OpenTextFile(InputFile)
于 2013-11-08T04:07:36.803 に答える