用vbs读取文本文件的最后一行_vbs

问:
您好,脚本专家!如何仅读取文本文件的最后一行?
-- BM
答:
您好,BM。如果您曾经想知道您好,脚本专家!与其它每日专栏(比如,知心姐姐)的不同之处,那么,下面是一种途径。假设有人在给知心姐姐的信中说:
知心姐姐:
我的生活一团糟,我需要采取一些措施来应对。我如何能扭转我的生活并且重新快乐起来?
绝望之人于代顿
知心姐姐绝不会给绝望之人这样的答复:
亲爱的绝望之人:
唉,您的生活不能变好了。很抱歉。
那么,您认为脚本专家会如何答复您关于读取文本文件的最后一行呢?答对了:
亲爱的 BM:
唉,您不能。很抱歉。
不过,请等一下,先不要走。的确,知心姐姐绝不会说,“您知道,Desperate,要使您快乐起来我无能为力。但是这有一个办法可以使您看起来是快乐的。”然而脚本专家却没有这样的疑虑。换句话说,我们无法为您提供仅读取文本文件最后一行的脚本。但是以下脚本可以看起来仅读取文本文件的最后一行:

复制代码 代码如下:

Const ForReading = 1 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objFile = objFSO.OpenTextFile("C:\Scripts\Test.txt", ForReading) 
Do Until objFile.AtEndOfStream 
    strLine = objFile.ReadLine 
Loop 
objFile.Close 
Wscript.Echo strLine 

我们此处遇到的问题是 FileSystemObject(用于处理文本文件的脚本对象)只知道一个方向:向前。它必须从文件开头开始,而且只能继续向文件的末尾运行。您无法指定其他起始位置且无法反向读取(即从末尾到开头)。实际上,您甚至无法重新读取文件:除非关闭然后再重新打开该文件,否则到达文件末尾后您无法重新读取该文件。这就是为什么涉及到文本文件时,教程的解决方法几乎都是一样的。
此处的解决方法是,我们实际上确实从头至尾读取整个文本文件。然而,我们只跟踪所读取的最后一行。读到文件的末尾时,我们将得到一个变量,它包含所读取的最后一行的值;它同时也是文件的最后一行。回显该变量的值时,看起来好像我们只读取了最后一行(尤其是没有其他东西要处理的时候,FileSystemObject 的速度非常快)。我们没有 - 我们实际上读取了整个文件 - 但是没有人会知道。这将是我们的小秘密。
至于代码本身,我们首先定义名为 ForReading 的常量并将其值设为 1;我们将使用该常量告诉 FileSystemObject 我们要打开待读取的文本文件。然后,我们创建 Scripting.FileSystemObject 的一个实例,并且使用 OpenTextFile 方法打开文件 C:\Scripts\Test.txt。接下来是下面这个代码块:

复制代码 代码如下:

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 

羡慕吧,知心姐姐!

时间: 2024-10-04 17:41:02

用vbs读取文本文件的最后一行_vbs的相关文章

用vbs实现读取文本文件的方法_vbs

vbs读取文件方法Function readfile(readfilepath) 'On Error Resume Next     Set fs = CreateObject("Scripting.FileSystemObject")     Set file = fs.OpenTextFile(readfilepath, 1, false)     readfile=file.readall     file.close     set fs=nothing end Functio

VBS文本文件操作实现代码_vbs

对于文件的操作,例如:生成一个或者打开一个或者删除一个.txt格式文件.虽然官方的FILE插件提供了一些基本功能,但功能不多.你并不需要理解什么是fso模版,什么是vbs语句,直接套用下面的语句吧!红色字为自己定义的部分,蓝色字为任意选一部分 如果你看不懂,请参考下面的例子!操作同一个文件红色部分必须相同 请认真看括号内的解释内容定义一个名为fso的关系文件问题的对象,对于一个文件的操作只需写一次,此句必须写VBS Set fso = CreateObject("Scripting.FileSy

用vbs对文本文件的内容进行排序_vbs

问: 您好,脚本专家!我有一个包含计算机名称列表的文本文件.如何按照字母顺序对该文件进行排序? -- LR 答: 您好,LR.如果想偷懒的话,我们就会告诉您:"对不起,您不能这样做."我们也可以就此脱身,因为 Microsoft 的脚本编写技术中没有一个方法能在打开文本文件后对文件进行排序.不过,嗨,"脚本专家"什么时候偷过懒呢? 噢,对了,我们是偷过几次懒,不过希望所有的人都已经忘了.不过,这次我们将向您提供一个解决办法. 虽然没有能直接对文本文件进行排序的方法,

使用 System.IO 和 Visual C# .NET 读取文本文件

visual 使用 System.IO 和 Visual C# .NET 读取文本文件 在 Visual C# .NET 中读取文本文件 打开和读取文件进行读取访问是输入/输出 (IO) 功能的一个非常重要的部分,即使您不需要写入到相关文件,也是如此. 本示例打开一个文件进行读取,这适用于读取文本文件,但不适用于读取二进制文件. 本示例使用多个可用于打开文件的方法之一. 虽然很多数据结构都可以用于存储从文件中检索到的信息,但是,arraylist 类是使用最简便的结构. 为了打开文件和从文件中读

在ASP.NET页中读取文本文件

asp.net 简介 在现实世界中,人们经常希望能够把某个文本文件的部分或全部内容保存到一个 Web 网页变量中.在经典的 ASP 中,只要简单地使用 FileSystemObject 就能做到了.其实,在 ASPFAQs.com 中就有一个 FAQ 栏目专门讨论 FileSystemObject . 可是在 ASP.NET 中呢?FileSystemObject 当然还可以用,不过,经验表明这么做会严重影响服务器性能.因此,最好还是使用 .NET 框架本身提供的类来读取文件.本文要介绍的是如何

ASP入门教程-读取文本文件

一.读取文本文件的步骤如下: 1.创建 FileSystemObject 对象实例: <% Set fso=Server.CreateObject("Scripting.FileSystemObject") %> 2.使用FileSystemObject对象的OpenTextFile方法返回一个 TextStream 对象实例: <% Set txtFile=fso.OpenTextFile(filename[, iomode[, create[, format]]]

求大神指教-在c++控制台程序中读取文本文件

问题描述 在c++控制台程序中读取文本文件 我是新手,刚刚入门,学校安排了一个暑期项目,做一个球员信息管理系统. 把数据存储在txt文件中,怎样才可以有序的读取我要找的数据,包括球员的赛季数据个个人信息.... 解决方案 C++读取文本文件 解决方案二: 那要看你是怎么存储的数据,什么顺序存储的就怎么读.可以一个球员的信息占一行,或者xxx个字节.然后一个一个球员的读出来. 解决方案三: 最简单的,可以用json文件等来存取,这样用jsoncpp等可以方便读取,解析数据. 解决方案四: 先定义一

php读取文本文件内容

//fopen 读取文件实例  代码如下 复制代码 $path ='a.txt'; $fp=fopen($file,"r");//以只读的方式打开文件 while(!(feof($fp))) {  $text=fgets($fp);//读取文件的一行  echo $text;     } //file_get_contents读取文件  代码如下 复制代码 if( file_exists( $path ) ) {     $body = file_get_contents($path)

PowerShell读取文本文件指定行内容的方法_PowerShell

本文介绍一个PowerShell中如何一步到位的获取到一个文本文件的第N行.比如一个文本文件,它有1000行,我想把第500行的内容直接取出来的,最简单的方法是通过PowerShell来实现. 在PowerShell中,可以通过Get-Content这个cmdlet来获取文本文件的内容.Get-Content将一个文本文件读取到一个数组中,每一个数组元素就是文件的一行内容.比如一个文本文件内容如下: 复制代码 代码如下: 111 222 333 那么,使用Get-Content获取到一个数组,数