为您推荐:
精华内容
最热下载
问答
  • 因为它没有定义,所以这变量默认情况下被赋值为 0,而 0 对于 OpenTextFile 来说并不是一个合法的参数: 所有的用脚本打开的文本文件在脚本结束的时候会自动关闭。但是我们要养成关闭文件的一个好的习惯,这样就...

    文件的创建:

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

    例如:(在c:\windows文件夹创建一个xxwl.ini文件)

    Set objFSO = CreateObject("Scripting.FileSystemObject")

    Set objFile = objFSO.CreateTextFile("c:\windows\xxwl.ini")  

    如果这个文件不存在,那么 CreateTextFile 方法会创建一个。如果这个文件已经存在,那么CreateTextFile 方法会复写存在的文本文件,并以新的空白的文件取代它。

    如果不想这个文件被取代,那么就用一个可以选择的参数 Overwrite 。当这个参数设置成 False 的时候,这个文件就不被复写。当这个参数被设置成 True(默认的是 True)时,那么就会被复写也就是清空。

    例如:(在c:\windows文件夹创建一个xxwl.ini文件,如果文件存在,而又不想被复写那么就用如下代码)

    Set objFile = objFSO.CreateTextFile("c:\windows\xxwl.ini", False)

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

    例如:(需要在c:\windows文件夹创建一个xxwl.ini文件,如果这个文件存在就显示其中的内容如果不存在就创建一个)

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    If objFSO.FileExists("c:\windows\xxwl.ini") Then
       Set objFile = objFSO.OpenTextFile("c:\windows\xxwl.ini", 1)
    txt = objFile.ReadAll
    Wscript.Echo txt
    Else
    Set objFolder = objFSO.GetFile("c:\windows\xxwl.ini")
    End If
    创建临时文件的方法:

    为了生成一个临时文件名,脚本首先要创建一个 FSO 对象实例然后调用 GetTempName 方法(不用参数。)

    例如:(需要创建10个临时文件名)

    Set objFSO = CreateObject("Scripting.FileSystemObject")

    For i = 1 to 10

    strTempFile = objFSO.GetTempName

     Wscript.Echo strTempFile

    Next

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

    例如:(要在c:\xxwl\生成一个临时的文件)

    Set objFSO = CreateObject("Scripting.FileSystemObject")

    strPath = "C:\xxwl"

    strFileName = objFSO.GetTempName

    strFullName = objFSO.BuildPath(strPath, strFileName)

    Set objFile = objFSO.CreateTextFile(strFullName)

    objFile.Close

    这里如果文件夹xxwl不存在就会提示错误,那么就要先检查了,检查和创建文件夹的方法会在文件夹操作中学习

    像文本文件中写入数据是写系统管理脚本的另外一个强大的功用。文本文件提供了一种方法可以让你将脚本获得的输入存储在其中。输入可以替代现有的文字或者是添加到现有的文字后面。文本文文件也可以纪录脚本的执行情况。这个对于debug 脚本来说费城有用。将脚本的执行纪录放在一个文本文件中,你可以过阵子来察看这个日志去决定脚本实际执行了哪些而哪些没有执行。FSO 给你提供了向文本文件中写如数据的能力。为了用 FSO 脚本向一个文本文件中写入数据,你必须:

    1. 创建一个 FSO 对象实例。

    2. 用 OpenTextFile 方法打开这个文本文件,你可以以两种方法打开:

    For writing (parameter value 2, constant = ForWriting).

    例如:

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objTextFile = objFSO.OpenTextFile ("c:\windows\xxwl.ini", 2, True)

    在这个模式下,写入新的数据会覆盖旧的数据。(旧的数据会被删除,新的数据添加上去。)

    用这个模式,是将存在的文件换上新的内容。

    For appending (parameter value 8, constant = ForAppending).

    例如:

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objTextFile = objFSO.OpenTextFile ("c:\windows\xxwl.ini", 8, True)

    在这种模式下,数据写在原来文件的末尾。用这种模式向现有的文件中添加数据。

    3. 用或者 Write,WriteLine,WriteBlankLine 方法来向文本文件中写入数据。

    4. 关闭文本文件

    向文本文件中写数据的三种方法在表格如下:

    Write 向文本文件中写入数据,不是添加文件到末尾。不会自动换行。

    例如,如下代码写入两个单独的字符串:

    objFile.Write ("This is line 1.")

    objFile.Write ("This is line 2.")

    返回的数据类似如下:

    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.

    除了以上方法之外,VB 脚本提供了常量 VbTab 来向文本文件中写入。VbTab

    向两个字符中插入一个空格。为了创建一个空格分隔的文件,代码和下面的类似:

    objTextFile.WriteLine(objService.DisplayName & vbTab & objService.State)

    FSO 的一个弱点就是它不能直接修改特定的行的信息。你不能写类似下面的命令:跳过到第五行,更改一些数据,然后保存成新的文件。为了修改在一个十行文件中的第五行,你的脚本必须

    1. .读取整个 10 行

    2. .将 1-4 行写回文件。

    3. 写入修改好的第五行的内容。

    4. 写入第 6 行到第 10 行的内容。

    在系统管理中,简洁是一种美德。例如,假如你的脚本每天晚上运行,在你的 DC 上从事件日志中获得日志,将这些事件写入数据库中,纪录哪个计算机可以成功的连接到,哪个不可以。基于一些历史的目的,你或许希望跟踪明年一整年的所有成功和失败的纪录。这个对于脚本刚开始生效和网络不稳定的情况下来说,都是非常重要的。从另外的情况来说,你或许只是希望刚才脚本运行的时候发生了什么。换句话说说,你不是希望要一个日志中过去的 365 天的信息,而是要距离最近的信息。它让你可以很快的打开文件并且查找看脚本是否按照计划的运行。

    当你的文本文件用 ForWriting 模式打开的,任何写入的新的数据会替代原来存在的文件。例如,假如你的文本文件里面存储了整个莎士比亚的故事全集,但是你用脚本以 ForWriting 模式打开了这个文本,并且向里面写了一个字母 a,那么当你的这个文件写完关闭之后,它就只是包含一个字母 a,原来的数据就全部丢失了。

    这个脚本以 ForWriting 模式打开脚本 C:\FSO\Scriptlog.txt 然后将当前的日期和时间写入文件。每当脚本运行的时候,旧的时间和日期被新的取代,这个文本文件就永远只是有单独的一个日期的值。

    Const ForWriting = 2

    Set objFSO = CreateObject("Scripting.FileSystemObject")

    Set objFile = objFSO.OpenTextFile("C:\windows\xxwl.ini", ForWriting)

    objFile.Write Now

    objFile.Close


    许多脚本被设计成为在特定的时间间隔的时候运行,收据数据,保存数据。这些脚本的是用来分析趋势或者在过去的时间内部的使用情况。在这些情况下,你就不希望删除现在存在的数据而去替代成新的数据。  

    例如,假如你用你的脚本监视进程使用量。在任何一个时间点上,进程的使用量应该是在 0 到100 之间的一个值,对于它自己来说,单个的值没有什么意义。为了获得进程使用的一个完整的图景,你需要重复不断的监视使用情况并纪录它的值。如果你的进程在每几秒钟之内返回的数据是9%,17%,92%,90%,79%,88%,91%那么你的进程使用是非常高的。这个就可以对比出这个时间内的使用情况。

    如果以 ForAppending 的模式打开一个文件,你可以使数据不是覆盖现有的数据,它的数据是添加到文件的底部。例如,在 4.43 中的脚本打开一个文本文件,并且将当前的日期和时间写入文件。因为是以 ForAppending

    的模式打开的文件,当前的日期会卸载文件的底部。如果你在不同的时候分别运行脚本,你的脚本结束时候大约如下面的信息:  

    6/25/2002 8:49:47 AM

    6/25/2002 8:49:48 AM

    6/25/2002 8:50:33 AM

    6/25/2002 8:50:35 AM

     

    Const ForAppending = 8

    Set objFSO = CreateObject("Scripting.FileSystemObject")

    Set objFile = objFSO.OpenTextFile("C:\windows\xxwl.ini", ForAppending)

    objFile.WriteLine Now

    objFile.Close

    上面的脚本用 WriteLine 方法写入数据保证每个日期都是独占一行的。如果这个脚本用 Write

    的方法来写的话,那么这个脚本运行结束的时候,数据写在一起,如下的样子:

    6/25/2002 8:49:47 AM6/25/2002 8:49:48 AM6/25/2002 8:50:33 AM6/25/2002 8:50:35 AM

    用文本文件来工作有三个主要的步骤。在你可以作其它的事情之前,你必须打开文本文件。这个你可以打开存在的文件或者创建一个新的文本文件,创建结束之后,默认文件是打开的。每个方法都是返回一个TextStream 对象实例。

    在你获得了 TextStream 对象之后,你可以向这个文件中写或者读这个文件。但是你不能向同一个文件读和写。换句话说,在同一个操作中,你不能打开一个文件,读这个文件然后再向这个文件中写东西。你必须读完这个文件后关闭,然后再打开这个文件,写入数据,然后关闭。

    当你打开一个存在的文件,这个文件要么是准备好被读的,要么是准备好被写的。如果你创建一个新的文本文件,这个文本文件只是被读的,没有什么其它原因的话,它没有内容去被读。最后,你要去关闭这个文本文件,虽然它不是必须的,因为在脚本结束的时候,它会自动关闭,但是这个对于程序实践是需要了解的。

    为了打开一个文本文件:

    1. 创建一个 FSO 对象实例。

    2. 用:OpenTextFile 来打开一个文本文件。这个 OpenTextFile 需要两个参数,一个是一个文件的路径,另外一个是跟着的参数:

            For reading (parameter value = 1, constant = ForReading).

           文件被打开之后只是被用来为读作准备的,为了写这个文件,你必须再一次的打开文件,用参数 ForWriting 或者 ForAppending。

            For writing (parameter value 2, constant = ForWriting).

           文件被打开,并且写入的数据覆盖了原来存在的数据,就是说旧的数据被删除,新的被添加。用这个方法用新的数据来代替存在的数据。

           For appending (parameter value 8, constant = ForAppending).

           文件在这种模式下打开,并且新的数据添加到文件的末尾。用这个方法向存在的文件中添加新的数据。

    当打开文件的时候,你必须使用适当的参数。当你用读的模式打开一个文件而试图向里面写东西的时候,你会收到一个的错误。你如果试图打开一个非文本文件的话也会收到同样的错误的。你可以直接用数值(比如 1 代表写)或者创建一个常量然后赋值给它适当的值。

    例如,如下的两种方法都可以打开一个文件并且准备被读:

    例一:(读取方式打开C:\windows\xxwl.ini)

    Const ForReading = 1

    Set objFSO = CreateObject("Scripting.FileSystemObject")

    Set objFile = objFSO.OpenTextFile("C:\windows\xxwl.ini", ForReading)

    例二:(读取方式打开C:\windows\xxwl.ini)

    Set objFSO = CreateObject("Scripting.FileSystemObject")

    Set objFile = objFSO.OpenTextFile("C:\windows\xxwl.ini", 1)

    但是在没有定义这个常量ForReading 的时候,你不能直接用。这是因为事实上 VB 脚本并没有这些 COM 对象常量。如下的脚本会返回一个错误并且失败。这是因为ForReading 这个常量并没有显式的定义。因为它没有定义,所以这变量默认情况下被赋值为 0,而 0 对于 OpenTextFile 来说并不是一个合法的参数:

    所有的用脚本打开的文本文件在脚本结束的时候会自动关闭。但是我们要养成关闭文件的一个好的习惯,这样就可以避免产生的一些错误。

    有些时候你或许希望用一个脚本多次读一个文件。你或许打开一个文本文件然后将它所有的内容全部保存给一个字符串变量,然后搜索这个字符串来查找特定的错误的代码。当这个错误找到了,你再逐行去读取文件,提炼出有错误的每一行。如果你尝试多次去读一个文件,你不会收到你期待的结果,而是会遇到一个运行的错误。例如下的脚本读取一个文本文件,返回文件的内容到屏幕,然后尝试重复这样的过程:


        Set objFSO = CreateObject("Scripting.FileSystemObject")

        Set objFSO = CreateObject("Scripting.FileSystemObject")

        Set objFile = objFSO.OpenTextFile("c:\windows\xxwl.ini", 1)

        Wscript.Echo "第一次读取文件"

        strContents = objFile.ReadAll

        Wscript.Echo strContents

        Wscript.Echo "文件读取完毕"

        Do While objFile.AtEndOfStream = False

            strLine = objFile.ReadLine

            Wscript.Echo strLine

        Loop

    第一次文件是被读取的,内容存储在变量 strContents 上,第二次,文件读取的时候,没什有数据回显在屏幕上,这是因为文件已经到达了文件的末尾,没有其它的数据给你读了。为了读取这个数据,你必须关闭这个文件然后重新打开它。你不能在读到文件的末尾之后去跳到文件的开头去了。TextStreamObject.Close 方法用来关闭一个文本文件。例如,下面的脚本创建一个FSO对象实例,然后打开一个文本文件,然后在立即关闭了。为了访问文件的内容,你必须再一次的调用 OpenTextFile 方法去重新打开这个文件。

    Set objFSO = CreateObject("Scripting.FileSystemObject")

    Set objFile = objFSO.OpenTextFile("C:\windows\xxwl.ini", 1)

    objFile.Close

    在许多的企业脚本中,读取文本文件的内容是个标准进程,你可以用这个功能来读取命令行的参数。例如,你的文本文件包含了计算机名字的列表,脚本审计成读取这个列表,然后在每个计算机上运行这个脚本。搜索满足特定条件的日志文件。例如,你或许想找所有有错误的日志。将日志文件中添加内容并且汇入到数据库。例如,你或许有一个服务或者程序来保存信息到特定存文本文件格式。然后你用脚本来读取这个文件拷贝相关的信息到数据库中。

    可以用 FSO 来都读取文本文件的内容,但是有以下几点你需要牢记:FSO 只能读取 ASCII 的文本文件。你不能用 FSO 读取unicode 或者

    binary 文件格式的文件,比如 microsoft word 或者是 Microsoft excel .用 FSO读取文本文件的时候,只能有一种方式:从前到后。此外,FSO 读取文件的时候是逐行读取的。如果你试图返回前面的行,你必须从开始再重新读取,直到特定的行。

    你不能打开一个文件同时用来读和写。如果你打开一个文件是为了读的,那么你想修改文件内容的时候,你必须重新打开文件。如果你尝试在写的模式下读取文件,那么你会收到一个的错误。

    还有读取特定的字符然后停止也是我们常用的技巧:

    读取第一行的前 12 个字符并且将它赋值给变量 strText

    strText = objTextFile.Read(12)

    读取一行并且将它赋值给变量strText

    strText = objTextFile.ReadLine

    跳过前面的 12 字节 从第 13 个字符开始

    objTextFile.Skip(12)

    先读第一行,然后读取第三行。跳过了第二行

    strText = objTextFile.Readline
    objTextFile.SkipLine
    strText = objTextFile.Readline

    跳过3行
    For i=1 to 3
    objTextFile.ReadLine
    Next

    正如前面提到的,FSO 只能从文本文件的前面读到后面,你不能从后面向前面读。这个对于日志文件来说有一些问题,大部分的日志文件是按照日期格式来写的,它的最开始的第一个日志被纪录在第一行,第二个纪录纪录在第二行,依次类推。这就以为着你感兴趣的事情,最新的日志往往在文件末尾。

    有的时候你希望按照反日期的顺序来显示信息,就是最近的纪录最先显示,最旧的纪录最后显示。虽然你不能从后面先前的读取文本文件,但是你要可以实现上面的目的,脚本必须:  

    1. 创建一个数组来存储文本文件的每行信息

    2. 用 ReadLine 的方法读取文本文件的每行信息,然后将每行的信息作为数组的一个独立的元      素存储在数组中。

    3. 在屏幕上显示数组的信息,从数组的最后面开始,向前显示。

    例如,下面的脚本读取文件 c:\windows\xxwl.ini的信息,然后将每行的信息作为数组

    的一个元素存储在数组 arrFileLine 中。在整个文件被读了之后,从数组的最后一个开始回显数组的信息。为了做到这点,用了一个 for循环,从数组的最后一个元素, 逐渐增长到第一个元素,

    Dim arrFileLines()

     i = 0

    Set objFSO = CreateObject("Scripting.FileSystemObject")

    Set objFile = objFSO.OpenTextFile("C:\windows\xxwl.ini", 1)

    Do Until objFile.AtEndOfStream

    Redim Preserve arrFileLines(i)

    arrFileLines(i) = objFile.ReadLine

    i = i + 1

    Loop

    objFile.Close

     For l = Ubound(arrFileLines) to LBound(arrFileLines) Step -1

     Wscript.Echo arrFileLines(l)

    Next

    如果文件的内容和下面的一样:

    1ddd

    2ccc

    3bbb

    4aaa

    那么在屏幕上回显的信息如下:

    4aaa

    3bbb

    2ccc

    1ddd

    在一些定宽的文本文件中,区域是受长度的限制的。第一个 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:\windows\xxwl.ini", 1)

    Do Until objFile.AtEndOfStream

    objFile.Skip(5)

    strCharacters = objFile.Read(1)

    Wscript.Echo strCharacters

    objFile.SkipLine

    Loop

    为了更好说明脚本是如何工作的,我们假设脚本文件 c:\windows\xxwl.ini 看起来是如下的样子的:

    xxxxxxxaXXXXXXXXXXXXXX

    XXXXXbXXXXXXXXXXXXXXXXXXX

    XXXXXcXXXXXXXXXXXXx

    XXXXXdXXXXXXXXXXXXXXXXXXXXXXXXX

    对于这个文件的每行,前面的五个字符都是 x,第六个是数字,后面是随机数量的 x。当脚本 运行的时候,脚本会:

    1. 打开文本文件从第一行开始读起。

    2. 跳过前面五个字符。

    3. 用 Read 载方法读取第六个字符

    4. 回显字符在屏幕上

    5. 跳到下面一行重复上面的进程,直到脚本运行结束。.

     

    OpenTextFile 方法

      打开指定的文件并返回一个 TextStream 对象,可以通过这个对象对文件进行读、写或追加。

      object.OpenTextFile(filename[, iomode[, create[, format]]])

      参数

      object

      必选项。 object 应为 FileSystemObject 的名称。

      filename

      必选项。 指明要打开文件的字符串表达式。

      iomode

      可选项。 可以是三个常数之一: ForReading 、 ForWriting 或 ForAppending 。

      create

      可选项。 Boolean 值,指明当指定的 filename 不存在时是否创建新文件。 如果创建新文件则值为 True ,如果不创建则为 False 。 如果忽略,则不创建新文件。

      format

      可选项。 使用三态值中的一个来指明打开文件的格式。 如果忽略,那么文件将以 ASCII 格式打开。

      设置

      iomode 参数可以是下列设置中的任一种:

      常数 值 描述

      ForReading 1 以只读方式打开文件。 不能写这个文件。

      ForWriting 2 以写方式打开文件

      ForAppending 8 打开文件并从文件末尾开始写。

      format 参数可以是下列设置中的任一种:

      值 描述

      TristateTrue 以 Unicode 格式打开文件。

      TristateFalse 以 ASCII 格式打开文件。

      TristateUseDefault 使用系统默认值打开文件。

      说明

      下面的代码说明了如何使用 OpenTextFile 方法打开文件并追加文本:

      var fs, a, ForAppending;

      ForAppending = 8;

      fs = new ActiveXObject("Scripting.FileSystemObject");

      //可以是三个常数之一: ForReading 、 ForWriting 或 ForAppending

      //分别是 1 ,2 ,3

      a = fs.OpenTextFile("c:\\testfile.txt", 1, false);

      ...

      a.Close();

    展开全文
    zhangrenfang 2013-01-14 14:20:07
  • 45KB weixin_38529251 2021-01-03 01:28:13
  • Set file1 = fso.OpenTextFile(“c:\test.txt”,1, False) '设置文件对象 1 只读模式;2 写模式;8 在文件末尾进行写操作 objFso.FileExists(“文件路径”) '判定文件是否存在,存在返回trus,否则返回false file1....

    常用语句:

    1.CRT命令
    '发送命令
    crt.Screen.Send “whyy@dsl-vty” & chr(13)
    '等待字符串出现
    crt.Screen.WaitForString “Password:”
    '等待字符串出现,等待1秒钟
    crt.Screen.WaitForString (“Password:”,1)
    '开启同步
    crt.Screen.Synchronous = True
    '判断指针1秒内不移动,用于确定安全连接可以进行后续代码输入操作
    Do
    bCursorMoved = crt.Screen.WaitForCursor(1)
    Loop until bCursorMoved = False
    '判定是否已经连接到设备
    if crt.Session.Connected = true then
    '断开连接
    crt.session.disConnect
    '激活窗口 用于多tab页面
    crt.Activate
    '连接到指定设备
    crt.session.Connect("/telnet " & b(n))
    '延时1秒
    crt.Sleep 1000

    2.vbScript语句

    a.文件操作
    Set fso = CreateObject(“Scripting.FileSystemObject”) '创建文件对象
    Set file1 = fso.OpenTextFile(“c:\test.txt”,1, False) '设置文件对象 1 只读模式;2 写模式;8 在文件末尾进行写操作
    objFso.FileExists(“文件路径”) '判定文件是否存在,存在返回trus,否则返回false
    file1.AtEndOfStream <> True '如果文件末尾无数据返回true,否则返回false
    line = file1.ReadLine '读取第一行文本数据,并将读取位移动到下一行
    params = Split (line) '分割读取的行数据,用空格符分割
    file1.Close '关闭文件

    b.系统文档操作
    '创建shell对象,对系统特殊文档操作
    Set objShell = CreateObject(“WScript.Shell”)

    '返回"我的文档"的路径给变量szMyDocs,可以动态的返回"我的文档"的路径
    szMyDocs = objShell.SpecialFolders(“MyDocuments”)

    '设置文件路径到变量中
    szSessionsFile = szMyDocs & “\SessionList.txt”

    3.知识点

    <1.判断文件是否存在
    if Not objFso.FileExists(szSessionsFile) then '如果txt文件不存在,就报错并退出sub
    crt.Dialog.MessageBox “Session list file not found:” & vbcrlf & _
    vbcrlf & _
    szSessionsFile & vbcrlf & vbcrlf & _
    "Create a session list file as described in the description of " & _
    “this script code and then run the script again.”
    exit sub
    end if

    <2.容错机制
    On Error Resume Next '后面代码错误会继续执行
    crt.Session.Connect "/telnet " & vSessionsArray(0)
    szError = Err.Description '将错误表述信息放入变量szError中
    On Error Goto 0 '关闭容错机制

    ❤️.判断是否安全连接
    '判断是否连接正常
    if crt.Session.Connected then
    crt.Screen.Synchronous = True '同步显示
    '第一次连接时的安全检测
    Do
    bCursorMoved = crt.Screen.WaitForCursor(1)
    Loop until bCursorMoved = False
    ’ 一旦光标在一秒内停止移动,我们就认为他已经安全的连接上了远程设备
    end if

    <4.安全关闭连接
    ’ 断开连接
    crt.session.disconnect
    ’ 等待连接关闭
    Do
    crt.Sleep 100
    Loop While crt.Session.Connected = True '每100毫秒判断连接是否断开

    <5.说明:
    1.CRT默认tab的index为1
    2.要创建第二个标签页tab,必须使用函数set newtab = objCurrentTab1.Clone()复制标签页为新的tab页面
    否则报错tab 2 超出index范围rang

    函数:
    Set objCurrentTab1 = crt.GetTab(1) '创建标签页1
    objCurrentTab1.session.disConnect '断开标签页1的当前连接
    objCurrentTab1.Activate '激活标签页1
    objCurrentTab1.session.Connect("/telnet 172.16.205.1" ) '标签页1连接设备172.16.205.1
    set newtab = objCurrentTab1.Clone() '复制标签页1到新标签页

    展开全文
    qq_23556841 2020-01-16 17:13:43
  • 45KB weixin_38568031 2020-09-04 00:45:50
  • 9KB lanya123 2018-02-13 18:00:10
  • 1、打开文件使用opentextfile方法set fs =createobject(“scripting.filesystemobject”)set ts=fs.opentextfile(“c:\1.txt”,1,true)注意这里需要填入文件的完整路径,后面一个参数为访问模式1为forreading2为for...

    1、打开文件

    使用opentextfile方法

    set fs =createobject(“scripting.filesystemobject”)

    set ts=fs.opentextfile(“c:\1.txt”,1,true)

    注意这里需要填入文件的完整路径,后面一个参数为访问模式

    1为forreading

    2为forwriting

    8为appending

    第三个参数指定如果指定文件不存在,是否创建。

    2、读取文件

    读取文件的方法有三个

    read(x)读取x个字符

    readline读取一行

    readall全部读取

    例如:

    set fs =createobject(“scripting.filesystemobject”)

    set ts=fs.opentextfile(“c:\1.txt”,1,true)

    value=ts.read(20)

    line=ts.readline

    contents=ts.readall

    这里还要介绍几个指针变量:

    textstream对象的atendofstream属性。当处于文件结尾的时候这个属性返回true.我们可以用循环检测又没有到达文件末尾。例如:

    set fs =createobject(“scripting.filesystemobject”)

    set f=fs.getfile(“c:\1.txt”,1,false)

    set ts=f.openastextstream(1,0)

    do while ts.atendofstream<>true

    f.read(1)

    loop

    还有一个属性,atendofline,如果已经到了行末尾,这个属性返回true.

    Textstream对象还有两个有用的属性,column和line.

    在打开一个文件后,行和列指针都被设置为1。

    看一个综合的例子吧:

    set fs =createobject(“scripting.filesystemobject”)

    set f=fs.opentextfile(“c:\1.txt”,1,true)

    do while f.atendofstream<>true

    data=””

    for a=1 to 5

    if f.atendofstream<>true then

    data=data+f.readline

    end if

    next

    dataset=dataset+1

    wscript.echo “data set” &dataset & ”:” & data

    loop

    最后说一下在文件中跳行

    skip(x)  跳过x个字符

    skipline  跳过一行

    用法也很简单 和前面一样,就不说了。

    3、写文件

    可以用forwriting和forappending方式来写

    写有3各方法:

    write(x)

    writeline

    writeblanklines(n) 写入n个空行

    来看一个例子:

    data=”hello, I like script programing”

    set fs =createobject(“scripting.filesystemobject”)

    if (fs.fileexists(“c:\2.txt”)) then

    set f =fs.opentextfile(“c:\2.txt”,8)

    f.write data

    f.writeline data

    f.close

    else

    set f=fs.opentextfile(“c:\2.txt”,2, true)

    f.writeblanklines 2

    f.write data

    f.close

    end if

    注意 写完文件以后一定要关闭!!!!!!!  还有就是,如果要读文件又要写文件,读完之后一定也要记得关闭,这样才能以写的方式打开。

    展开全文
    weixin_39599372 2021-08-10 04:03:45
  • qq_40889300 2017-11-01 09:09:48
  • 3KB sinat_24516479 2014-12-15 12:23:54
  • 你并不需要理解什么是fso模版,什么是vbs语句,直接套用下面的语句吧!红色字为自己定义的部分,蓝色字为任意选一部分如果你看不懂,请参考下面的例子!操作同一个文件红色部分必须相同请认真看括号内的解释内容定义...

    对于文件的操作,例如:生成一个或者打开一个或者删除一个.txt格式文件。

    虽然官方的FILE插件提供了一些基本功能,但功能不多。

    你并不需要理解什么是fso模版,什么是vbs语句,直接套用下面的语句吧!

    红色字为自己定义的部分,蓝色字为任意选一部分

    如果你看不懂,请参考下面的例子!

    操作同一个文件红色部分必须相同

    请认真看括号内的解释内容

    定义一个名为fso的关系文件问题的对象,对于一个文件的操作只需写一次,此句必须写VBS Set fso = CreateObject("Scripting.FileSystemObject")

    0.判断一个文件或文件夹是否存在(yn是返回值,文件存在返回1,不存在返回0)

    VBS yn=fso.FileExists(判断文件的目录)

    1.创建一个文件(蓝字定义该文本文件是否可以被下次写入覆盖,省略默认为ture)

    VBS set ttfile=fso.createtextfile(创建的文件目录,ture|false)

    2.打开一个已存在的文件(蓝字定义文件写入方式,分别为a.只读b.可读写,但每打开一次文件重写c.在文件末尾写)

    VBS const forreading=1

    VBS const forwriting=2

    VBS const forappending=8

    注意:要想更改打开方式必须关闭文件重新打开

    VBS set ttfile=fso.opentextfile(打开文件的目录,forreading|forwriting|forappending)

    3.关闭一个打开的文件(红色部分要于已经打开的文件红色部分相同)

    VBS ttfile.close

    4.读取打开文件的一行并回车(红色部分ttfile要于已经打开的文件红色部分相同)

    VBS read=ttfile.ReadLine

    5.读取所有文件内容(红色部分ttfile要于已经打开的文件红色部分相同)

    VBS read=ttfile.ReadAll

    6.写入一行并回车(红色部分要于已经打开的文件红色部分相同)

    VBS ttfile.writeline(自己要写入的内容)

    7.删除指定文件(若已定义过ttfile则不需要第一句)

    VBS set  ttfile=fso.GetFile(要删的文件目录)

    VBS ttfile.delete

    8.判断输入标记是否在末尾(是返回-1,否则返回0)

    VBS  yn=ttfile.atendofstream

    以下是一些文件夹的操作

    8.判断是否为根目录(yn是返回值,文件存在返回1,不存在返回0)

    VBS yn=fso.IsRootFolder

    9.读取文件夹

    VBS set ttfile=fso.GetFolder(文件夹目录)

    10.创建一个文件夹

    VBS set ttfile=fso.creaFolder(创建的文件夹目录)

    11.删除指定文件夹(若已定义过ttfile则不需要第一句)

    VBS set  ttfile=fso.GetFolder(要删的文件目录)

    VBS ttfile.deletefolder

    下面是其他一些经常用到的文件操作(注意:可用于所有格式的文件。红字是你的上文脚本已经定义过的)

    VBSttfile.size                               返回文件大小

    VBSttfile.type                             返回文件类型

    VBS ttfile.DateCreated                  返回文件创建时间

    VBS ttfile.DatelastAccessed            返回文件最近访问时间

    VBS ttfile.DateLastModified            返回文件最后修改时间

    VBS ttfile.name                            返回文件名称

    VBS ttfile.ShortPath                      返回文件短路径名

    VBS ttfile.path                             返回文件物理地址

    VBS Set fso = CreateObject("Scripting.FileSystemObject")

    //判断d盘下是否有文件1.txt

    VBS pd1=fso.FileExists(d:\1.txt)

    if 0=pd1

    //没有的话,在d盘下创建一个不可覆盖的文件1.txt

    VBS set txtfile=fso.createtextfile("d:\1.txt",false)

    //以在末尾写入的方式打开1.txt

    VBS set txtfile=fso.opentextfile("d:\1.txt",forappending)

    //写入一行“1234567890”

    VBS txtfile.writeline("1234567890")

    //关闭1.txt

    VBS txtfile.close

    endif

    //以只读方式打开1.txt

    VBS set txtfile=fso.opentextfile("d:\1.txt",forreading)

    //读取第一行,并将其赋予变量read

    VBS read=txtfile.ReadLine

    //关闭1.txt

    VBS txtfile.close

    一时间没有完全列出所有函数,不足的部分希望大家跟帖补上。

    'creat by 席飞剑(小席老师)

    '操作文本文件,操作fso对象(文件对象操作)

    创建文件

    dim fso, f

    set fso = server.CreateObject("Scripting.FileSystemObject")

    set f = fso.CreateTextFile("C:\test.txt", true) '第二个参数表示目标文件存在时是否覆盖

    f.Write("写入内容")

    f.WriteLine("写入内容并换行")

    f.WriteBlankLines(3) '写入三个空白行(相当于在文本编辑器中按三次回车)

    f.Close()

    set f = nothing

    set fso = nothing

    打开并读文件

    dim fso, f

    set fso = server.CreateObject("Scripting.FileSystemObject")

    set f = fso.OpenTextFile("C:\test.txt", 1, false) '第二个参数 1 表示只读打开,第三个参数表示目标文件不存在时是否创建

    f.Skip(3) '将当前位置向后移三个字符

    f.SkipLine() '将当前位置移动到下一行的第一个字符,注意:无参数

    response.Write f.Read(3) '从当前位置向后读取三个字符,并将当前位置向后移三个字符

    response.Write f.ReadLine() '从当前位置向后读取直到遇到换行符(不读取换行符),并将当前位置移动到下一行的第一个字符,注意:无参数

    response.Write f.ReadAll() '从当前位置向后读取,直到文件结束,并将当前位置移动到文件的最后

    if f.atEndOfLine then

    response.Write("一行的结尾!")

    end if

    if f.atEndOfStream then

    response.Write("文件的结尾!")

    end if

    f.Close()

    set f = nothing

    set fso = nothing

    打开并写文件

    dim fso, f

    set fso = server.CreateObject("Scripting.FileSystemObject")

    set f = fso.OpenTextFile("C:\test.txt", 2, false) '第二个参数 2 表示重写,如果是 8 表示追加

    f.Write("写入内容")

    f.WriteLine("写入内容并换行")

    f.WriteBlankLines(3) '写入三个空白行(相当于在文本编辑器中按三次回车)

    f.Close()

    set f = nothing

    set fso = nothing

    判断文件是否存在

    dim fso

    set fso = server.CreateObject("Scripting.FileSystemObject")

    if fso.FileExists("C:\test.txt") then

    response.Write("目标文件存在")

    else

    response.Write("目标文件不存在")

    end if

    set fso = nothing

    移动文件

    dim fso

    set fso = server.CreateObject("Scripting.FileSystemObject")

    call fso.MoveFile("C:\test.txt", "D:\test111.txt") '两个参数的文件名部分可以不同

    set fso = nothing

    复制文件

    dim fso

    set fso = server.CreateObject("Scripting.FileSystemObject")

    call fso.CopyFile("C:\test.txt", "D:\test111.txt") '两个参数的文件名部分可以不同

    set fso = nothing

    删除文件

    dim fso

    set fso = server.CreateObject("Scripting.FileSystemObject")

    fso.DeleteFile("C:\test.txt")

    set fso = nothing

    创建文件夹

    dim fso

    set fso = server.CreateObject("Scripting.FileSystemObject")

    fso.CreateFolder("C:\test") '目标文件夹的父文件夹必须存在

    set fso = nothing

    判断文件夹是否存在

    dim fso

    set fso = server.CreateObject("Scripting.FileSystemObject")

    if fso.FolderExists("C:\Windows") then

    response.Write("目标文件夹存在")

    else

    response.Write("目标文件夹不存在")

    end if

    set fso = nothing

    删除文件夹

    dim fso

    set fso = server.CreateObject("Scripting.FileSystemObject")

    fso.DeleteFolder("C:\test") '文件夹不必为空

    set fso = nothing

    到这里就差不多了,希望大家多写多练

    展开全文
    weixin_39593340 2020-12-20 07:59:30
  • weixin_42627902 2021-06-18 05:28:21
  • weixin_29161719 2021-07-29 07:14:00
  • zhengjian1996 2021-01-22 08:51:29
  • Feng_wwf 2020-12-09 11:41:21
  • weixin_36205101 2021-04-22 13:22:53
  • franktan2010 2014-06-05 10:25:26
  • weixin_33983238 2021-08-10 04:02:13
  • E_celeste 2019-10-31 08:22:17
  • weixin_35985795 2021-07-29 02:50:46
  • weixin_39901358 2020-12-22 13:58:38
  • zhpfaff 2020-05-16 14:56:28
  • blq01 2018-11-10 22:10:53
  • weixin_30086041 2021-03-19 09:56:27
  • weixin_32698563 2021-06-28 08:19:49
  • qq_46229050 2020-07-27 19:00:50
  • qq_41571056 2020-05-23 21:12:56
  • weixin_39802020 2021-06-10 13:28:51
  • longyup 2020-08-09 16:13:13

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,080
精华内容 832
关键字:

opentextfilevbs