| 网站首页 | 新闻中心 | 系统安全 | 网络安全 | 安全技术 | 下载中心 | 
课件制作网.
收藏本站
设为首页
安全365
如何只读取文本文件中单一的指定行?
如何只读取文本文件中单一的指定行?
作者:佚名 文章来源:不详 点击数: 更新时间:2007-1-23 20:10:18
问:

嗨,Scripting Guy!如何只读取文本文件中指定的一行? 例如,如何编写一个这样的脚本:只读取一个文本文件中的第 16 行,然后将该行的值存储在一个变量中?

-- DL

答:

您好,DL。您知道,我们有一段时间没有回答有关文本文件的问题了,这不是值得夸耀的事,毕竟有时似乎我们收到的所有其他问题都与读取和写入文本文件有关。人们总是问我们是否曾经遇见过 Bill Gates,其实我们总是避免遇见 Bill Gates,因为我们怕他问我们有关文本文件的问题。

当然,我们之所以收到如此多有关文本文件的问题,其原因是内置到 Windows 的脚本编写技术不具备非常复杂的文本处理能力。以这个问题为例。您可能会想 WSH 或 VBScript 或“某些”脚本对象应该有一个方法,对这种方法您可以说,“嗨,去读取第 16 行并且只读取该文件的第 16 行”。”没这么简单。FileSystemObject 提供脚本程序可用的大多数文本处理能力,它只能从文件的第 1 行开始,然后向下处理。没有能快速跳到指定行的方法。

尽管如此,这并不意味着我们不能只将第 16 行的值存储在一个变量里,它只意味着我们必须使用一种不太“优雅的”的方法。为简便起见,让我们考虑一个有 5 行的简单文本文件:

1 2 3 This is line no. 4 in the text file.5 

我们想将第 4 行的内容(只是第 4 行的内容)存储在一个变量中。我们不能直接跳到第 4 行,但我们可以使用如下脚本得到所需结果:

Const ForReading = 1



Set objFSO = CreateObject("Scripting.FileSystemObject") Set objTextFile = objFSO.OpenTextFile("mylogfile.log", ForReading)



For i = 1 to 3 objTextFile.ReadLine Next



strLine = objTextFile.ReadLine Wscript.Echo strLine



objTextFile.Close 

那么,这里做了些什么呢?好,刚开始我们创建了一个 FileSystemObject 的实例并打开文件 Mylogfile.log 以供读取。然后我们创建了一个 For Next 循环,从 1 循环到 3。在循环内部,我们使用了 ReadLine 方法读取文本文件中的当前行。

为什么?好,记住,我们真正关心的是第 4 行,但 FileSystemObject 不允许我们直接到达第 4 行,我们只能先通过第 1 、2 和 3 行。这就是该代码块实际进行的工作。第一次执行循环时,它调用 ReadLine 方法,这个操作读取文本文件的第 1 行(尽管我们不对读取的信息作任何处理),然后自动移动到文件的下一行(第 2 行)。第二次执行循环时,我们读取第 2 行,然后移动到第 3 行。第三次执行循环时,对,我们读取第 3 行,然后移动到第 4 行,即我们感兴趣的行。

此时,我们的循环结束。我们再次调用 ReadLine 方法,只有这一次我们将该行的内容存储在变量 strLine 中。这是我们所做的工作:

strLine = objTextFile.ReadLine 

由于是演示脚本,我们接着就回显了 strLine 的值并关闭了该文本文件。我们无法使用任何巧妙的捷径,但是我们达到了目的:设法将第 4 行的值放入变量 strLine 中。

正如我们说的,不是很优雅,但可行。而且它运行得相当快。例如,创建一个 10,000 行的示例日志文件,修改脚本以使其仅将第 9999 行的值存储到一个变量中。(您会怎么做呢?更改 For Next 循环,以从 1 循环到 9998。)然后回显第 9999 行的值。如果这样做,就会看到“优雅”之处:整个过程只使用一秒钟左右。情人眼里出西施,我们发现,任何只需花一两秒钟就能完成的脚本实在是很“美丽”的。

【转自世纪安全网 http://www.21safe.com】
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
     
     
     
    CSO们如何应对新技术的安
    普通企业如何应对黑客攻
    企业该如何防范由VoIP引
    浅谈IT如何实现企业的应
    黑客与正规企业是如何串
    如何无限制申请Gmail 2.
    企业如何避免人为因素的
    社会工程学:如何利用黑客
    如何在一个文件被添加到
    如何将“珊瑚虫”好友请

    Copyright © 2006-2008 www.anquan365.com 安全365
    建议使用1024*768分辨率及第三方浏览器对本站进行浏览