用vbs实现对文本文件中的项计数
程序员文章站
2022-07-04 20:36:42
问: 嗨,脚本专家!如何向文本文件的顶部添加行? -- ft 答: 您好,ft。您知道,在亚瑟·柯南·道尔爵士生涯的某一时刻,他实际上将夏洛克·福尔摩斯写死了,他...
问:
嗨,脚本专家!如何向文本文件的顶部添加行?
-- 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 方法,就像这样,大功告成。好了,文件关闭。嗨,我们只是想要模仿一下夏洛克·福尔摩斯。
说到这,您知道夏洛克·福尔摩斯有一个叫麦克罗夫特的哥哥吗?这是真的。按照推测麦克罗夫特很有天赋,但却因为太懒而没做出什么有趣或有用的事。
嗨,您说这听起来有点耳熟是何用意?没关系;您很可能指的是某个其他的每天编写脚本的专栏作家。
嗨,脚本专家!如何向文本文件的顶部添加行?
-- 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 方法,就像这样,大功告成。好了,文件关闭。嗨,我们只是想要模仿一下夏洛克·福尔摩斯。
说到这,您知道夏洛克·福尔摩斯有一个叫麦克罗夫特的哥哥吗?这是真的。按照推测麦克罗夫特很有天赋,但却因为太懒而没做出什么有趣或有用的事。
嗨,您说这听起来有点耳熟是何用意?没关系;您很可能指的是某个其他的每天编写脚本的专栏作家。