用vbs实现对文本文件中的项计数

问:
嗨,脚本专家!如何向文本文件的顶部添加行?

-- FT

答:
您好,FT。您知道,在亚瑟·柯南·道尔爵士生涯的某一时刻,他实际上将夏洛克·福尔摩斯写死了,他认为他已写完了有关这个大侦探所有能写的一切。公众的疾呼很快改变了他的想法,他迅速地使夏洛克·福尔摩斯起死回生。(按照所有肥皂剧的那种基本情节主线一路创作下来。)

我们脚本专家对亚瑟·柯南·道尔爵士深感同情。毕竟,我们会周期性地想,“好了,到这里吧;我们已编写了有关文本文件所有能编写的一切。”我们刚有此想法,就立刻收到有关文本文件的一堆问题,其中包括三个人所问的同一问题:如何向文件文件的顶部添加行?

很简单,我亲爱的华生(啊,我亲爱的 FT)。所有您需要做的只是使用类似下面的脚本:

代码如下:

Const ForReading = 1 
Const ForWriting = 2

Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objFile = objFSO.OpenTextFile("C:\Scripts\Test.txt", ForReading)

strContents = objFile.ReadAll 
objFile.Close

strFirstLine = "This is the new first line in the text file." 
strNewContents = strFirstLine & vbCrLf & strContents

Set objFile = objFSO.OpenTextFile("C:\Scripts\Test.txt", ForWriting) 
objFile.WriteLine strNewContents

objFile.Close

注意。很有趣的是,在原本小说中夏洛克·福尔摩斯从没有说“很简单,我亲爱的华生”。我们不知道为什么他不那么说;他就是不那么说。

好了,现在游戏已经开始了,不是吗?我们首先创建一对常量 - ForReading 和 ForWriting,我们将在处理文本文件时使用这两个常量。我们创建一个 FileSystemObject 实例,然后使用 OpenTextFile 方法打开文件 C:\Scripts\Test.txt 以读取以下内容:

Set objFile = objFSO.OpenTextFile("C:\Scripts\Test.txt", ForReading)

现在文件已打开,我们使用 ReadAll 方法读取该文件的全部内容并将这些内容存储在称作 strContents 的变量中。然后我们立即关闭文件 Test.txt。为什么?是这样,通过 FileSystemObject 可打开文件进行读取或写入,但不能同时进行这两种操作。为向文件顶部添加新的一行,我们将必须对该文件进行写入;这意味着我们必须重新打开它,但这次是为了写入。

接下来我们需要为该文件构造新内容。我们不能直接向文本文件的顶部添加行;FileSystemObject 只允许向文本文件的末尾添加新行。因此,我们需要做的是在内存中创建一个全新的文件,然后用此新文件替换现有 Test.txt 的内容。新文件将由三部分组成:新的第一行;回车-换行;及该文件的现有内容。为构造此文件,我们首先使用下面的代码在称为 strFirstLine 的变量中存储新的第一行:

strFirstLine = "This is the new first line in the text file."

然后我们使用以下代码行合并新的第一行、回车-换行(使用 VBScript 常量 vbCrLf)及该文件的现有内容(存储在变量 strContents 中):

strNewContents = strFirstLine & vbCrLf & strContents

现在剩下的工作就是重新打开 Test.txt(这次是为了写入),然后使用 WriteLine 方法用新文件替换现有内容:

Set objFile = objFSO.OpenTextFile("C:\Scripts\Test.txt", ForWriting)
objFile.WriteLine strNewContents

然后我们调用 Close 方法,就像这样,大功告成。好了,文件关闭。嗨,我们只是想要模仿一下夏洛克·福尔摩斯。

说到这,您知道夏洛克·福尔摩斯有一个叫麦克罗夫特的哥哥吗?这是真的。按照推测麦克罗夫特很有天赋,但却因为太懒而没做出什么有趣或有用的事。

嗨,您说这听起来有点耳熟是何用意?没关系;您很可能指的是某个其他的每天编写脚本的专栏作家。

(0)

相关推荐

  • 用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读取文本文件的最后一行

    问: 您好,脚本专家!如何仅读取文本文件的最后一行? -- BM 答: 您好,BM.如果您曾经想知道您好,脚本专家!与其它每日专栏(比如,知心姐姐)的不同之处,那么,下面是一种途径.假设有人在给知心姐姐的信中说: 知心姐姐: 我的生活一团糟,我需要采取一些措施来应对.我如何能扭转我的生活并且重新快乐起来? 绝望之人于代顿 知心姐姐绝不会给绝望之人这样的答复: 亲爱的绝望之人: 唉,您的生活不能变好了.很抱歉. 那么,您认为脚本专家会如何答复您关于读取文本文件的最后一行呢?答对了: 亲爱的 BM:

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

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

  • VBScript 文件操作代码小结

    创建文本文件 复制代码 代码如下: Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.CreateTextFile("C:\FSO\ScriptLog.txt") 检察文件是否存在 复制代码 代码如下: Set objFSO = CreateObject("Scripting.FileSystemObject") If objFSO.FileE

  • vbs删除文本文件的行的函数

    Delete Line Function 复制代码 代码如下: Function DeleteLine(strFile, strKey, LineNumber, CheckCase) 'DeleteLine Function by TomRiddle 2008 'Remove line(s) containing text (strKey) from text file (strFile) 'or 'Remove line number from text file (strFile) 'or

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

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

  • 用vbscript实现从文本文件中删除所有重复行的代码

    问: 您好,脚本专家!如何从文本文件中删除所有重复行? -- SW 答: 您好,SW.您知道,成为一名脚本专家便意味着开始永无止境地寻找给定问题的最终解决方案.(或者至少在我们的经理问为什么我们似乎从未真正完成什么时,我们是这么告诉他的:"老板,永无止境的寻找过程需要时间!")这就是为什么我们很高兴看到您的问题的原因.不久前 我们回答了一个关于从文本文件中删除重复名字的类似问题.我们想到的解决方案十分简单而且效果不错:只是我们不确定那是最佳解决方案.现在,很感谢您的问题,我们可以再次尝

  • 使用VBS访问外部文本文件一些方法和脚本实例代码

    处理文件用到的常量有:ForReading = 1 ,ForWriting=2,ForAppending=8,用于的操作分别是读/写和追加,都要在使用之前用VBS Const来声明.常用于处理文本文件的方法有:Read(var)-读var个字符,ReadLine-读一行,ReadAll-读整个文件内容,SkipLine-跳过本行指向下一行,Write(var)-把字符串var写入文件,WriteLine(var)-把字符串var和换行符写入文件,WriteBlankLines(n)-写入n个换行

  • 用vbs实现对文本文件中的项计数

    问: 嗨,脚本专家!如何向文本文件的顶部添加行? -- FT 答: 您好,FT.您知道,在亚瑟·柯南·道尔爵士生涯的某一时刻,他实际上将夏洛克·福尔摩斯写死了,他认为他已写完了有关这个大侦探所有能写的一切.公众的疾呼很快改变了他的想法,他迅速地使夏洛克·福尔摩斯起死回生.(按照所有肥皂剧的那种基本情节主线一路创作下来.) 我们脚本专家对亚瑟·柯南·道尔爵士深感同情.毕竟,我们会周期性地想,"好了,到这里吧:我们已编写了有关文本文件所有能编写的一切."我们刚有此想法,就立刻收到有关文本文

  • 用vbs列出注册表中 Run 项中的所有项目

    问: 您好,脚本专家!如何列出注册表中 Run 项中的所有项目? -- JW 答: 您好,JW.如何列出注册表中 Run 项中的所有项目?坦白地讲,我们不打算告诉您.真的很抱歉.不是因为我们不喜欢您,而是因为我们认为我们有一个更好的答案给您.(如果我们错了,那好,我们只能说这不会是第一次.)  由于您对 Run 项感兴趣,因此我们假定您真正想知道的是如何找出哪些程序被配置为在每次 Windows 启动时自动运行.您一定可以从 Run 项中读取到该信息,不要对此产生怀疑.实际上,您可以从 Run 

  • 用vbscript实现在文本文件中搜索两个项

    问: 您好,脚本专家! 您曾经介绍过如何在文本文件中搜索单个词或短语,但如何在文本文件中搜索两个短语呢? 我想知道文件中是否包含 Windows 2000 或 Windows XP. -- JR 答: 您好,JR.您知道,让脚本专家去做一件事情就已经够困难的了:可见让他们去做两件事情几乎是不可能的. 但我们要告诉您的是: 只要您不介意我们向您介绍一种简单的方法来在文本文件中搜索多个项,我们就会向您介绍如何在文本文件中搜索多个项. 注意. 为什么称之为"简单的方法"呢? 我们不打算费神设

  • vbs 读写注册表之系统启动项添加与删除

    核心vbs代码 '变量定义 Dim writeName,writeValue,fileName,regLoaction,regApp '创建注册表编辑器对象 Set regApp=WScript.CreateObject("WScript.Shell") '配置文件名 fileName="FullScan.txt" '输入键名 writeName="xiaoqiang" '输入键值 writeValue="test" '***

  • 使用vbs脚本添加程序到自启动项的代码

    因编辑器过滤了一些字符,比如&,所以下面的脚本可能会运行错误..看官添加&&这个字符就可以了. vbs脚本的功能呢是很多的,不过有时候我们只需要其中的某些功能,今天我突然想研究下怎么用vbs脚本实现添加程序到自启动项...... 首先来一段吧... 复制代码 代码如下: '========================================================================== ' ' VBScript Source File -- Cre

  • ionic中列表项增加和删除的实现方法

    在项目中遇到表单似的页面,需要进行增加一行和减少一行的操作,例如: 要实现可以选中商品,以及对商品的信息列表进行显示与否的操作 html代码如下: <div class="chanpinxiangqing"> <div class="item item-divider">产品明细</div> <div class="chanpinxiangqing" ng-repeat="master in m

  • JS简单去除数组中重复项的方法

    本文实例讲述了JS简单去除数组中重复项的方法.分享给大家供大家参考,具体如下: <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <script> var arr = ["aaa","bb

  • javascript 删除数组中重复项(uniq)

    可以直接使用的代码:我们修正版 function unique(data){ data = data || []; var a = {}; len = data.length; for (var i=0; i [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 下面是进阶教程与说明,喜欢跟深入的朋友可以参考下.首先让我们看下 YUI 是如何处理的: 复制代码 代码如下: var toObject = function(a) { var o = {}; for (var i = 0; i

  • js删除select中重复项的实现代码

    删除select中重复项 body{ text-align:center;} div{ width:400px; background:#f1f5fa; margin:auto; border:solid 1px #BFC9DB; padding:10px;} h4{ } a{text-align:right; display:block; font-size:12px;} /*定义全局函数$*/ function $(id){ return document.getElementById(id

随机推荐