Do Until objFile.AtEndOfStream strLine = objFile.ReadLine Loop
此處我們要做的只是逐行讀取文件,直到文件的末尾(即讀到文件流末尾)。每次讀取某行時(shí),我們用剛讀取的文本替換變量 strLine 的值。例如,假設(shè)文本文件包含三行: A
C 在我們的循環(huán)中讀取行 1,因此將值 A 賦給 strLine。在下一個(gè)循環(huán)中讀取第二行,這意味著將值 B 賦給 strLine。再循環(huán)一次并且將值 C 賦給 strLine。因?yàn)槲覀円训竭_(dá)文件末尾,故 strLine 保持值 C,該值恰好為文件的最后一行。然后關(guān)閉文件并回顯 strLine 的值。所有人只知道我們所做的是讀取 - 返回 - 文件最后一行的值。 是的,很隱秘。 不可否認(rèn),此腳本存在一個(gè)潛在的問題。假設(shè)文件末尾添加了幾行空白行。腳本將忠實(shí)地返回空(空值)作為文本文件的最后一行。這就是它應(yīng)該做的:畢竟,文件的最后一行是空白。但是假設(shè)這是某種類型的日志文件,出于某種原因,創(chuàng)建此日志的應(yīng)用程序總是將空白行放到文件末尾。在這種情況下,可能您真正感興趣的是文件中最后的非空白行。下面是修改后的腳本,它使用 Len 函數(shù)檢查所讀取的每行的長度。如果長度等于 0,則意味著此行為空白行,便不在變量 strLine 中存儲(chǔ)該值:
復(fù)制代碼 代碼如下:
Const ForReading = 1 Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.OpenTextFile("C:/Scripts/Test.txt", ForReading) Do Until objFile.AtEndOfStream strNextLine = objFile.ReadLine If Len(strNextLine) > 0 Then strLine = strNextLine End If Loop objFile.Close Wscript.Echo strLine