使用VBScript读取和写入文件

22 vbscript

我们如何使用VBScript读取和写入一些字符串到文本文件?我的意思是我有一个已经存在的文本文件,所以当我使用下面的代码时: -

Set fso = CreateObject("Scripting.FileSystemObject" )            
Set file = fso.OpenTextFile("C:\New\maddy.txt",1,1) 
Run Code Online (Sandbox Code Playgroud)

这打开文件只是为了阅读,但我无法写任何东西,当我使用这段代码时: -

Set fso = CreateObject("Scripting.FileSystemObject" )            
Set file = fso.OpenTextFile("C:\New\maddy.txt",2,1)
Run Code Online (Sandbox Code Playgroud)

我可以使用这个文件写,但无法读取任何内容.无论如何,通过只调用OpenTextFile一次方法我们可以打开文件进行读写.

我是VBScript的新手.我只熟悉C概念.是否有任何链接真正让我开始使用VBScript?

我想我需要对对象和属性概念有很好的了解.

gho*_*g74 22

您可以创建临时文件,然后将其重命名为原始文件:

Set objFS = CreateObject("Scripting.FileSystemObject")
strFile = "c:\test\file.txt"
strTemp = "c:\test\temp.txt"
Set objFile = objFS.GetFile(strFile)
Set objOutFile = objFS.CreateTextFile(strTemp,True)
Set ts = objFile.OpenAsTextStream(1,-2)
Do Until ts.AtEndOfStream
    strLine = ts.ReadLine
    ' do something with strLine 
    objOutFile.Write(strLine)
Loop
objOutFile.Close
ts.Close
objFS.DeleteFile(strFile)
objFS.MoveFile strTemp,strFile 
Run Code Online (Sandbox Code Playgroud)

使用OpenTextFile的用法几乎相同:

Set objFS = CreateObject("Scripting.FileSystemObject")
strFile = "c:\test\file.txt"
strTemp = "c:\test\temp.txt"
Set objFile = objFS.OpenTextFile(strFile)
Set objOutFile = objFS.CreateTextFile(strTemp,True)    
Do Until objFile.AtEndOfStream
    strLine = objFile.ReadLine
    ' do something with strLine 
    objOutFile.Write(strLine & "kndfffffff")
Loop
objOutFile.Close
objFile.Close
objFS.DeleteFile(strFile)
objFS.MoveFile strTemp,strFile 
Run Code Online (Sandbox Code Playgroud)


Ste*_*uan 13

有关FileSystemObject对象的更多信息,请访问http://msdn.microsoft.com/en-us/library/aa242706(v=vs.60).aspx.为了获得好的VBScript,我建议:

  • 选项显式有助于检测变量中的拼写错误.
  • 功能Sub可提高读取性和重用性
  • Const使得众所周知的常量被赋予名称

这里有一些代码用于读取和写入文本文件:

Option Explicit

Const fsoForReading = 1
Const fsoForWriting = 2

Function LoadStringFromFile(filename)
    Dim fso, f
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f = fso.OpenTextFile(filename, fsoForReading)
    LoadStringFromFile = f.ReadAll
    f.Close
End Function

Sub SaveStringToFile(filename, text)
    Dim fso, f
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f = fso.OpenTextFile(filename, fsoForWriting)
    f.Write text
    f.Close
End Sub

SaveStringToFile "f.txt", "Hello World" & vbCrLf
MsgBox LoadStringFromFile("f.txt")
Run Code Online (Sandbox Code Playgroud)

  • 这两个函数都需要“ f.Close”方法,以便文件不会保持打开状态。 (2认同)

Tes*_*101 6

你可以打开两个文本流,一个用于阅读

Set filestreamIn = CreateObject("Scripting.FileSystemObject").OpenTextFile("C:\Test.txt,1)
Run Code Online (Sandbox Code Playgroud)

和一个附加

Set filestreamOUT = CreateObject("Scripting.FileSystemObject").OpenTextFile("C:\Test.txt,8,true)
Run Code Online (Sandbox Code Playgroud)

filestreamIN可以从文件的开头读取,filestreamOUT可以写入文件的末尾.


Dan*_*ton 5

不要这么认为......你只能openTextFile用于阅读(1),写作(2)或追加(8).参考这里.

如果你使用VB6而不是 VBScript,你可以这样做:

Open "Filename" [For Mode] [AccessRestriction] [LockType] As #FileNumber
Run Code Online (Sandbox Code Playgroud)

使用Random模式.例如:

Open "C:\New\maddy.txt" For Random As #1
Run Code Online (Sandbox Code Playgroud)