我们如何使用VBScript读取和写入一些字符串到文本文件中?我的意思是我有一个已经存在的文本文件,因此当我使用下面的代码时: -
Set fso = CreateObject("Scripting.FileSystemObject" )
Set file = fso.OpenTextFile("C:\New\maddy.txt",1,1)
这只会打开文件进行阅读,但我无法写任何内容 当我使用这段代码时: -
Set fso = CreateObject("Scripting.FileSystemObject" )
Set file = fso.OpenTextFile("C:\New\maddy.txt",2,1)
我可以使用此文件进行写入但无法读取任何内容。无论如何我们只需要调用OpenTextFile
方法就可以打开文件进行读写。
我对VBScript很陌生。我只熟悉C概念。 是否有任何链接可以让我开始使用VBScript?
我想我需要对对象和属性概念有很好的了解。
答案 0 :(得分: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
使用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
答案 1 :(得分:12)
在http://msdn.microsoft.com/en-us/library/aa242706(v=vs.60).aspx查找有关FileSystemObject对象的更多信息。为了获得好的VBScript,我建议:
以下是一些读取和写入文本文件的代码:
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")
答案 2 :(得分:6)
您可以打开两个文本流,一个用于阅读
Set filestreamIn = CreateObject("Scripting.FileSystemObject").OpenTextFile("C:\Test.txt,1)
和一个附加
Set filestreamOUT = CreateObject("Scripting.FileSystemObject").OpenTextFile("C:\Test.txt,8,true)
filestreamIN可以从文件的开头读取,filestreamOUT可以写入文件的末尾。
答案 3 :(得分:5)
不要这么认为......你只能使用openTextFile
来阅读(1
),写作(2
)或追加(8
)。参考here。
如果你是VBScript的using VB6 instead,你可以这样做:
Open "Filename" [For Mode] [AccessRestriction] [LockType] As #FileNumber
使用Random
模式。例如:
Open "C:\New\maddy.txt" For Random As #1
答案 4 :(得分:2)
你可以将它放在Excel工作表中,如果它对你有价值,如果它需要其他的东西,但在excel表中存储信息是非常好的,因为你可以很容易地读取和写入
'this gives you an excel app
oExcel = CreateObject("Excel.Application")
'this opens a work book of your choice, just set "Target" to a filepath
oBook = oExcel.Workbooks.Open(Target)
'how to read
set readVar = oExcel.Cell(1,1).value
'how to write
oExcel.Cell(1,2).value = writeVar
'Saves & Closes Book then ends excel
oBook.Save
oBook.Close
oExcel.Quit
对不起,如果这个答案没有帮助,第一次写一个答案,只是觉得这可能是一个更好的方式
答案 5 :(得分:1)
您还可以读取整个文件,并将其存储在数组中
Set filestreamIN = CreateObject("Scripting.FileSystemObject").OpenTextFile("C:\Test.txt",1)
file = Split(filestreamIN.ReadAll(), vbCrLf)
filestreamIN.Close()
Set filestreamIN = Nothing
以您选择的任何方式操作数组,然后将数组写回文件。
Set filestreamOUT = CreateObject("Scripting.FileSystemObject").OpenTextFile("C:\Test.txt",2,true)
for i = LBound(file) to UBound(file)
filestreamOUT.WriteLine(file(i))
Next
filestreamOUT.Close()
Set filestreamOUT = Nothing
答案 6 :(得分:1)
无论您尝试做什么,都不应该同时读取和写入文件。它还会使用更多应该始终避免的内存。我建议使用.ReadAll方法读取整个文件,然后关闭它并执行您需要处理的数据(假设您将内容读入变量),然后写入同一文件并覆盖文件。如果你担心在覆盖当前文件时出现问题,你总是可以尝试将其写入不同的文件,如果在尝试覆盖原始文件之前没有工作则会抛出错误
答案 7 :(得分:0)
下面是一些执行此操作的简单代码:
rails destroy scaffold Profile