VBScript AtEndOfLine 属性
最后修改于 2025 年 4 月 9 日
VBScript 中的 AtEndOfLine
属性是 TextStream
对象的一部分。它指示文件指针是否已到达文本文件中的行尾。此属性是只读的,返回 True 或 False。它对于逐行或逐字符读取文本文件至关重要。
AtEndOfLine
有助于精确控制文件读取操作。它与 TextStream
对象的 Read
和 ReadLine
等方法配合使用。本教程通过实际示例涵盖 AtEndOfLine
以演示其用法。
AtEndOfLine 属性概述
AtEndOfLine
属性检查文件指针是否位于行尾。仅当指针到达行终止符时,它才返回 True。该属性与为读取而打开的 TextStream
对象一起使用。
主要功能包括在顺序文件读取期间检测行尾。它不会移动文件指针或修改文件。AtEndOfLine
有助于精确控制文本文件的处理。理解此属性对于文本文件操作至关重要。
使用 AtEndOfLine 进行基本文件读取
本示例演示了 AtEndOfLine
逐字符读取文本文件的最简单用法。它展示了属性在遇到行尾时如何变化。脚本读取直到第一行的末尾。
Set fso = CreateObject("Scripting.FileSystemObject") Set file = fso.OpenTextFile("test.txt", 1) ' 1 = ForReading Do Until file.AtEndOfLine char = file.Read(1) WScript.Echo char Loop file.Close Set fso = Nothing
脚本打开 "test.txt" 进行读取,并一次读取一个字符。循环继续,直到 AtEndOfLine
变为 True。每个字符都会回显到输出。这演示了基本的行尾检测。
使用 AtEndOfLine 处理多行
本示例展示了如何同时使用 AtEndOfLine
和 AtEndOfStream
来处理整个文件。它逐字符读取每一行,同时跟踪行尾。脚本处理文本文件中的多行。
Set fso = CreateObject("Scripting.FileSystemObject") Set file = fso.OpenTextFile("data.txt", 1) Do Until file.AtEndOfStream Do Until file.AtEndOfLine char = file.Read(1) WScript.Echo "Char: " & char Loop WScript.Echo "End of line reached" file.SkipLine ' Move to next line Loop file.Close Set fso = Nothing
外部循环检查文件末尾,而内部循环检查行末尾。每个字符都会单独处理。当一行结束时,会显示一条消息。SkipLine
会移到下一行。
计算每行的字符数
本示例使用 AtEndOfLine
来计算文件中每行的字符数。它演示了该属性的实际文件分析。脚本跟踪行号及其各自的长度。
Set fso = CreateObject("Scripting.FileSystemObject") Set file = fso.OpenTextFile("document.txt", 1) lineNum = 1 Do Until file.AtEndOfStream charCount = 0 Do Until file.AtEndOfLine file.Read(1) charCount = charCount + 1 Loop WScript.Echo "Line " & lineNum & ": " & charCount & " characters" lineNum = lineNum + 1 file.SkipLine Loop file.Close Set fso = Nothing
脚本逐行读取,而不存储字符。它为读取的每个字符递增一个计数器。每行之后,它会报告行号和字符数。这展示了如何使用 AtEndOfLine
进行分析。
使用 AtEndOfLine 进行自定义行处理
本示例演示了使用 AtEndOfLine
进行自定义行处理。它读取行,但以不同的方式处理特定字符。脚本在读取时将元音转换为大写。
Set fso = CreateObject("Scripting.FileSystemObject") Set file = fso.OpenTextFile("input.txt", 1) output = "" Do Until file.AtEndOfStream Do Until file.AtEndOfLine char = file.Read(1) If InStr("aeiou", LCase(char)) > 0 Then output = output & UCase(char) Else output = output & char End If Loop output = output & vbCrLf ' Add line break file.SkipLine Loop WScript.Echo output file.Close Set fso = Nothing
脚本读取每个字符并检查它是否是元音。输出中的元音会转换为大写。其他字符保持不变。AtEndOfLine
控制内部读取循环。修改后的文本在输出变量中构建。
使用 AtEndOfLine 读取固定宽度字段
本示例展示了如何使用 AtEndOfLine
读取固定宽度字段。它以特定长度的片段处理每一行。脚本演示了结构化文件解析。
Set fso = CreateObject("Scripting.FileSystemObject") Set file = fso.OpenTextFile("records.txt", 1) Do Until file.AtEndOfStream field1 = file.Read(10) ' First 10 chars field2 = file.Read(15) ' Next 15 chars field3 = file.Read(5) ' Next 5 chars WScript.Echo "Field 1: " & Trim(field1) WScript.Echo "Field 2: " & Trim(field2) WScript.Echo "Field 3: " & Trim(field3) ' Skip remaining characters in line if any Do Until file.AtEndOfLine file.Read(1) Loop file.SkipLine Loop file.Close Set fso = Nothing
脚本为每个字段读取特定的字符数。它使用 AtEndOfLine
来处理可变长度的行。字段会进行修剪以删除多余的空格。此方法对于固定格式数据文件很有用。内部循环确保正确处理行终止。
来源
在本文中,我们探讨了 VBScript 中的 AtEndOfLine
属性,涵盖了它的用法和实际应用。从基本的文件读取到复杂的文本处理,这些示例展示了精确的行处理。有了这些知识,您就可以通过更好的控制来增强文件处理脚本。