Read and write into a file using VBScript

前端 未结 9 1365
轮回少年
轮回少年 2020-11-27 06:34

How can we read and write some string into a text file using VBScript? I mean I have a text file which is already present so when I use this code below:-

Set         


        
相关标签:
9条回答
  • 2020-11-27 07:01

    You could also read the entire file in, and store it in an array

    Set filestreamIN = CreateObject("Scripting.FileSystemObject").OpenTextFile("C:\Test.txt",1)
    file = Split(filestreamIN.ReadAll(), vbCrLf)
    filestreamIN.Close()
    Set filestreamIN = Nothing
    

    Manipulate the array in any way you choose, and then write the array back to the file.

    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 
    
    0 讨论(0)
  • 2020-11-27 07:06

    Regardless of what you're trying to do there should be no need to read to and write to a file at the same time. It would also use more memory which should always be avoided. I'd suggest reading the entire file using the .ReadAll method and then close it and do whatever you need to do with the data (assuming you read the contents into a variable) and then do a write to the same file and overwrite the file. If you're concerned with having something go wrong when over-writing the current file you could always try to write it to a different file and throw an error if that doesn't work before trying to over-write the original.

    0 讨论(0)
  • 2020-11-27 07:10

    Find more about the FileSystemObject object at http://msdn.microsoft.com/en-us/library/aa242706(v=vs.60).aspx. For good VBScript, I recommend:

    • Option Explicit to help detect typos in variables.
    • Function and Sub to improve readilbity and reuse
    • Const so that well known constants are given names

    Here's some code to read and write text to a text file:

    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")
    
    0 讨论(0)
  • 2020-11-27 07:11

    You could put it in an Excel sheet, idk if it'll be worth it for you if its needed for other things but storing info in excel sheets is a lot nicer because you can easily read and write at the same time with the

     '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
    

    sorry if this answer isnt helpful, first time writing an answer and just thought this might be a nicer way for you

    0 讨论(0)
  • 2020-11-27 07:15

    You can create a temp file, then rename it back to original file:

    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 
    

    Usage is almost the same using 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 
    
    0 讨论(0)
  • 2020-11-27 07:16

    Don't think so...you can only use openTextFile for reading (1), writing (2), or appending (8). Reference here.

    If you were using VB6 instead of VBScript, you could do:

    Open "Filename" [For Mode] [AccessRestriction] [LockType] As #FileNumber
    

    Using the Random mode. For example:

    Open "C:\New\maddy.txt" For Random As #1
    
    0 讨论(0)
提交回复
热议问题