Do Until objFile.AtEndOfStream strLine = objFile.ReadLine Loop
此處我們要做的只是逐行讀取文件,直到文件的末尾(即讀到文件流末尾)。每次讀取某行時,我們用剛讀取的文本替換變量 strLine 的值。例如,假設文本文件包含三行: A
C 在我們的循環中讀取行 1,因此將值 A 賦給 strLine。在下一個循環中讀取第二行,這意味著將值 B 賦給 strLine。再循環一次并且將值 C 賦給 strLine。因為我們已到達文件末尾,故 strLine 保持值 C,該值恰好為文件的最后一行。然后關閉文件并回顯 strLine 的值。所有人只知道我們所做的是讀取 - 返回 - 文件最后一行的值。 是的,很隱秘。 不可否認,此腳本存在一個潛在的問題。假設文件末尾添加了幾行空白行。腳本將忠實地返回空(空值)作為文本文件的最后一行。這就是它應該做的:畢竟,文件的最后一行是空白。但是假設這是某種類型的日志文件,出于某種原因,創建此日志的應用程序總是將空白行放到文件末尾。在這種情況下,可能您真正感興趣的是文件中最后的非空白行。下面是修改后的腳本,它使用 Len 函數檢查所讀取的每行的長度。如果長度等于 0,則意味著此行為空白行,便不在變量 strLine 中存儲該值:
復制代碼 代碼如下:
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