VBS脚本运行库手册(7)-建立文本文件

发布时间:2020-04-14编辑:脚本学堂
VBS脚本运行库手册,建立文本文件。

读写文本文件
文本文件对于系统管理员来说是一个强大的系统管工具。这个对于现在的高级的图形界面和多用户的操作系统来说好象是不可能的。但是,简单的文本文件,比如 notepad 文件,仍然是系统管理的一个关键元素。文本文件是轻便而且便于维护的。他们占用较少的磁盘空间不需要其它多余的软件支持。文本文件可以简单的工作并且非常容易携带。用文本文件写的脚本文件可以被复制和察看任何计算机的信息,虽然它运行的系统不是 Windows.此外,它还提供了快捷,简单,标准的办法来向脚本输入和输出数据。文本文件可以存储向脚本中输入的数据(arguments)或者向脚本中硬编码。这样你就不用向命令行中输入 100 个服务器的名字,脚本可以从文本文件中读这些信息。同样,文本文件为存储脚本获取的信息提供了快捷简单的方法。这些数据可以直接写到数据库,但是这个要求在服务器上作额外的配置,额外的脚本代码,在脚本运行时候额外的管理。但是数据可以存在文本文件中,然后在稍后导入到数据中去。

创建文本文件
FSO 让你可以用现存在的文本工作,也可以让你自己创建脚本。为了创建一个新的文本文件,简单的创建一个 FSO 对象,然后调用 CreateTextFile 方法,输入完整的文件路径信息作为这个方法的参数。

例如,如下的脚本代码在文件夹 C:FSO 中创建了一个 Scriptlog.txt 的文件: 
Listing 4.32 Creating a Text File
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateTextFile("C:FSOScriptLog.txt")

如果这个文件存在,那么 CreateTextFile 方法会创建一个。如果这个文件已经存在,那么CreateTextFile 方法会复写存在的文本文件,而以新的空白的文件取代它。如果你希望这个文件不被取代,那么就用一个可以选择 Overwrite 的参数。当这个参数设置成 False 的时候,攒在的文件就不被复写。当这个参数被设置成 True(默认的是 True),那么就会复写存在的文件。例如,如下的脚本如果创建的文件存在的话就不会复写。

Set objFile = objFSO.CreateTextFile("C:FSOScriptLog.txt", False)

如果你将参数设置成 False,并且文件存在,那么就会有一个运行的错误。因为如此,你可以检查文件是否存在,如果存在,那么就作其它的操作,例如允许用户更改一个新的文件名。

用脚本创建文本文件

防止文件存在产生错误的方法是用脚本给文本文件生成一个名字。因为文件名字生成器并不创建

一个有意义的名字,这对于你想在未来要命名的日志和其它文件来说不是一个好的办法。但是,这个对于需要临时文件的脚本来说保证了有个特定的文件名。例如,你或许想让你的脚本将数据保存在 HTML 或者 XML 格式,然后将这些数据在 WEB 浏览器中显示,然后将这个临时文件在web 浏览器关掉时删除。在这种情况下,你可以用 GetTempName 方法来生成一个特有的文件名。

为了生成一个特别的文件名,脚本首先要创建一个 FSO 对象实例然后调用 GetTempName 方法(不用参数。)
下面的脚本用一个 For Next 循环来随机生成 10 文件名字。
Set objFSO = CreateObject("Scripting.FileSystemObject")
   For i = 1 to 10
   strTempFile = objFSO.GetTempName
   Wscript.Echo strTempFile
Next

当脚本在 CScript 下运行的时候,输出的命令行和下面的类似:
rad646E9.tmp
radEC50C.tmp
rad0C40A.tmp
radE866E.tmp
rad77F3D.tmp
rad19970.tmp
rad7A21A.tmp
radB9DDC.tmp
rad84930.tmp
rad92199.tmp

Note
用 GetTempName 来生成文件的名字生成的不是唯一的。部分原因是生成名称的算法,部  分是因为可能的名字的数量是有限的。文件名字被限制为 8 个字节,而且前三个字节规定为  rad,例如,你用脚本来创建 10000 个文件名字,在第 9894 个文件名字之后就不再是唯一的了,剩下的 106 个 53 对是复制的。

下面的示例脚本用 GetTempName 方法来创建一个文件,脚本必须:
1. 创建一个 FSO 对象实例。
2. 创建一个给文件夹 C:FSO 的变量叫做 strPath.
3. 用 GetTempName 方法来生成一个单独的文件名子。
4. 用 BuildPath 的方法来合并文件夹名字和文件名字来创建一个完成的临时文件的名字。这个    整个路径存储在 strFullName 变量中。 
5. 调用 CreateTextFile 方法,用 strFullName 来作参数。
6. 在创建了这个文件之后,关闭这个文件。在生产环境中,大多数情况下,你可能要向里面写    了数据之后再关闭它。
Set objFSO = CreateObject("Scripting.FileSystemObject")
   strPath = "C:FSO"
   strFileName = objFSO.GetTempName
   strFullName = objFSO.BuildPath(strPath, strFileName)
   Set objFile = objFSO.CreateTextFile(strFullName)
   objFile.Close