VBS脚本运行库手册(10)-写入文本文件

发布时间:2020-01-09编辑:脚本学堂
VBS脚本运行库手册,写入文本文件。

在一些定宽的文本文件中,区域受长度限制。第一个 field1 或许包含 15 个字节,第 2个 field 或许含有十个,依次类推。文件看起来和下面差不多:
Server Value Status
atl-dc-0119345   OK
atl-printserver-02    00042  OK
atl-win2kpro-0500000   Failed

在有些情况下,你或许只是想获得 values 的值或者只是想获得 status 的信息。这个 value 的信息,容易表明。Values 总是从第 26 个字符开始,不超过 5 个字符。为了获得这些值,你只需要获得第 26,27,28,29,30 个字符的信息。

方法 Read 允许你读取特定数目的字节。它的一个单独的参数就是你要读的字节的个数。例如,如下的脚本代码示例,读取后面的 7 个字节,并将读取的值存给变量 strCharacters:
strCharacters = objFile.Read(7)

用 Skip 和 SkipLine 方法,你可以获得文本文件中你选择的特定字符。例如,下面的脚本中只是读取每行的第 6 个字节。
1. 跳过每行前面五个字节用 Skip(5)
2. 用 Read(1)读取第 6 个字节
3. 跳到下面一行。
Set objFSO = CreateObject("Scripting.FileSystemObject")
  Set objFile = objFSO.OpenTextFile("C:FSOScriptLog.txt", 1)
  Do Until objFile.AtEndOfStream
  objFile.Skip(5)
  strCharacters = objFile.Read(1)
  Wscript.Echo strCharacters
  objFile.SkipLine
 Loop

脚本是如何工作的? 假设脚本文件 C:FSOScriptlog.txt 看起来是如下的样子的:
XXXXX1XXXXXXXXXXXXXX
XXXXX2XXXXXXXXXXXXXXXXXXX
XXXXX3XXXXXXXXXXXXx
XXXXX4XXXXXXXXXXXXXXXXXXXXXXXXX

对于这个文件的每行,前面的五个字符都是 x,第六个是数字,后面是随机数量的 x。当脚本运行的时候,脚本会:
1. 打开文本文件从第一行开始读起。
2. 跳过前面五个字符。
3. 用 Read 载方法读取第六个字符
4. 回显字符在屏幕上
5. 跳到下面一行重复上面的进程,直到脚本运行结束。.

像文本文件中写入数据是写系统管理脚本的另外一个强大的功用。文本文件提供了一种方法可以让你将脚本获得的输入存储在其中。输入可以替代现有的文字或者是添加到现有的文字后面。文本文文件也可以纪录脚本的执行情况。这个对于 debug 脚本来说费城有用。将脚本的执行纪录放在一个文本文件中,你可以过阵子来察看这个日志去决定脚本实际执行了哪些而哪些没有执行。FSO 给你提供了向文本文件中写如数据的能力。为了用 FSO 脚本向一个文本文件中写入数据,你必须:
1. 创建一个 FSO 对象实例。
2. 用 OpenTextFile 方法打开这个文本文件,你可以以两种方法打开:
For writing (parameter value 2, constant = ForWriting).
在这个模式下,写入新的数据会覆盖旧的数据。(旧的数据会被删除,新的数据添加上去。)
用这个模式,是将存在的文件换上新的内容。
For appending (parameter value 8, constant = ForAppending).
在这种模式下,数据写在原来文件的末尾。用这种模式向现有的文件中添加数据。
3. 用或者 Write,WriteLine,WriteBlankLine 方法来向文本文件中写入数据。.
4. 关闭文本文件
向文本文件中写数据的三种方法在表格 4.9 中:
Table 4.9 Write Methods Available to the FileSystemObject
Method Description
Write 向文本文件中写入数据,不是添加文件到末尾。不会自动换行。
例如,如下代码写入两个单独的字符串:
objFile.Write ("This is line 1.")
objFile.Write ("This is line 2.")
MethodDescription
返回的数据类似如下:
This is line 1.This is line 2.
WriteLine   向文本文件中写入数据后添加一个换行符号,然后区自动换行的。

比如,如下的代码:
objFile.WriteLine ("This is line 1.")
objFile.WriteLine ("This is line 2.")
结果输出的信息如下:
This is line 1.
This is line 2.

WriteBlankLines 向文本文件中写入特定数目空白的行。例如如下的代码向文本文件中写入两行独立的文字,然后用空白的行分开:
objFile.Writeline ("This is line 1.")
objFile.WriteBlankLines(1)
objFile.Writeline ("This is line 2.")
输出的结果如下:
This is line 1.
This is line 2.

除了在表格 4.9 中的方法之外,VB 脚本提供了常量 VbTab 来向文本文件中写入。VbTab 向两个字符中插入一个空格。为了创建一个空格分隔的文件,代码和下面的类似:
objTextFile.WriteLine(objService.DisplayName & vbTab & objService.State)
FSO 的一个弱点就是它不能直接修改特定的行的信息。你不能写类似下面的命令:跳过到第五行,更改一些数据,然后保存成新的文件。
为了修改在一个十行文件中的第五行,你的脚本必须
1.读取整个 10 行
2.将 1-4 行写回文件。
3.写入修改好的第五行的内容。
4.写入第 6 行到第 10 行的内容