| 网站首页 | 新闻中心 | 系统安全 | 网络安全 | 安全技术 | 下载中心 | 
课件制作网.
收藏本站
设为首页
安全365
如何查找和替换文本文件中的文本?
如何查找和替换文本文件中的文本?
作者:佚名 文章来源:不详 点击数: 更新时间:2007-1-23 20:08:43
问:

您好,脚本专家!在命令行中,如何使用脚本来打开文件并替换文本;例如,如何将所有“Jim”都替换为“James”?

-- JW

答:

您好,JW。我们以往在处理文本文件时不止一次地发现,并没有实现此操作的简便方法;也就是说,没有能够打开文本文件,然后查找并替换文本的 ReplaceText 命令。所幸的是,从另一个角度来看,这个问题属于典型的文本文件问题:尽管没有执行该任务的简便方法,但是可以通过其他方法来完成。

虽然我们无法直接搜索和替换文本文件中的文本,但可以退而求其次。我们可以这样做:1) 打开文本文件;2) 将文本读取到一个变量中;3) 对该变量执行搜索和替换操作;4) 重新保存文本文件。甚至可以从命令行中执行所有上述操作,我们稍后会说明这一点。我们先从编写执行搜索和替换操作的简单脚本入手:

Const ForReading = 1

Const ForWriting = 2



Set objFSO = CreateObject("Scripting.FileSystemObject")

Set objFile = objFSO.OpenTextFile("C:/Scripts/Text.txt", ForReading)



strText = objFile.ReadAll

objFile.Close

strNewText = Replace(strText, "Jim ", "James ")



Set objFile = objFSO.OpenTextFile("C:/Scripts/Text.txt", ForWriting)

objFile.WriteLine strNewText

objFile.Close

首先,创建两个常量(“ForReading”和“ForWriting”),分别用于打开文本文件时的两种情况。(没错,我们说的是两种情况)。我们创建一个“FileSystemObject”实例,然后使用“OpenTextFile”方法打开文件 C:/Scripts/Text.txt 以读取它的内容。

在打开文件的情况下,我们使用“ReadAll”方法将整个文件的内容读取到变量 strText 中。然后关闭 C:/Scripts/Text.txt,但几乎立即将其再次打开以写入内容。不错,看起来这是个笨办法,但 FileSystemObject 就是这样工作的:您可以打开文件来执行读取操作,也可以打开文件来执行写入操作,但不能同时执行这两种操作。(现在您应该明白了,FileSystemObject 的工作方式确实有点让人费解。)

在将文件内容存储在变量 strText 中后,我们接下来使用 VBScript 的“Replace”函数将所有 Jim 都替换为 James。可使用以下这行代码来执行这项操作:

strNewText = Replace(strText, "Jim ", "James ")

请注意,我们查找的是所有“Jim ”(“Jim”后跟一个空格),将它们全部替换为“James ”(“James”后跟一个空格)。尽管算不上绝对安全,但还是可以让脚本具有一点智能;如果脚本遇到“Jimmy”这样的名字,就不会尝试将“Jim”替换为“James”(结果是“Jamesmy”)。我们创建的新文件(在其中将所有 Jim 都替换为 James)存储在内存的 strNewText 变量中。

接下来,我们再次打开文件(执行写入操作),调用“WriteLine”方法,将 strNewText 的内容写入文件中,然后再次关闭文件。实际效果会怎样?如果开始时使用的文本文件的内容如下:

Jim Jones

Mary Smith

Jim Doe

Jim Johnson

Mary Johnston

最终得到的文本文件的内容如下:

James Jones

Mary Smith

James Doe

James Johnson

Mary Johnston

要通过命令行来执行所有上述操作,只需对脚本进行修改,以使它(按以下顺序)接受三个命令行参数:要打开的文件的名称,要搜索的文本以及要替换成的文本。以下就是用于完成此操作的脚本。请注意,我们将命令行参数存储在 strFileName、strOldText 和 strNewText 这三个变量中,在打开和保存文本文件以及调用 Replace 函数时将会使用这些变量:

Const ForReading = 1

Const ForWriting = 2



strFileName = Wscript.Arguments(0)

strOldText = Wscript.Arguments(1)

strNewText = Wscript.Arguments(2)



Set objFSO = CreateObject("Scripting.FileSystemObject")

Set objFile = objFSO.OpenTextFile(strFileName, ForReading)



strText = objFile.ReadAll

objFile.Close

strNewText = Replace(strText, strOldText, strNewText)



Set objFile = objFSO.OpenTextFile(strFileName, ForWriting)

objFile.WriteLine strNewText

objFile.Close

要使用这个修改过的脚本(我们将其命名为“replace.vbs”),只需在命令行中键入类似以下内容的命令:

cscript replace.vbs "C:/Scripts/Text.txt" "Jim " "James "

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

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

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