Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to over write and write in to a textfile by using Vbscript

Tags:

vbscript

i created a text file "list.txt" in commonapplicationdatafolder by using the following VBscript.i am displaying some values from a variable(strlist) by writing in to textfile.

Const Value = &H23&
Const PATH = "\Cape\ibs"

Dim fso                 ' File System Object
Dim spFile             ' Text File object to write
Dim objApplication      ' Application object
Dim objFolder           ' Folder object
Dim objFolderItem       ' FolderItem object

Set objApplication  = CreateObject("Shell.Application")
Set objFolder = objApplication.Namespace(Value)
Set objFolderItem = objFolder.Self
sname = objFolderItem.Path & PATH & "\list.txt"
Set fso = CreateObject("Scripting.FileSystemObject")
Set spFile = fso.CreateTextFile(sname, True)
spoFile.WriteLine(strlist)
spoFile.Close

Here are my doubts

1> Here before creating that file i need to delete the old existing "list.txt" Because during installation i always want to create the list file. So i want to include code that removes any existing file(any old list.txt), before creating the latest one.Here i did the following code

If fso.FileExists(sname) Then
    fso.DeleteFile sname, True
Else
    Set spFile = fso.CreateTextFile(sname, True)
    spoFile.WriteLine(strlist)
    Set objFolderItem = Nothing
    Set objFolder = Nothing
    Set objApplication = Nothing
    Set fso = Nothing
    spoFile.Close
 End If

Whats going on is it will create folder first time,next time it will delete it ,But i always want that file there(new fresh one with value from 'strlist' ) Can any one tell me the vbscript code to do that.Their i removed Else part also but only deletion going ,below things are not working means creation.

2>Here i was writing in to "list.txt" by using simply 'WriteLine' method(spoFile.WriteLine(strlist)),but i read somewhere that we need to use 'OpenTextFile'(Const ForWriting = 2) for writing,If that is the case what changes i need to do here,Is it mandatory?

like image 341
peter Avatar asked Feb 27 '23 18:02

peter


2 Answers

you need to move your delete or not delete decision before your write decision.

If fso.FileExists(sname) Then
    'you delete if you find it'
    fso.DeleteFile sname, True
End If
'you always write it anyway.'
Set spoFile = fso.CreateTextFile(sname, True)
spoFile.WriteLine(strlist)
Set objFolderItem = Nothing
Set objFolder = Nothing
Set objApplication = Nothing
Set fso = Nothing
spoFile.Close

alternately to your question with Constant write values and making this a little (very little) bit faster, you might try the following:

If fso.FileExists(sname) Then
  Set spoFile = fso.OpenTextFile(sname, 2, True)
Else
  Set spoFile = fso.CreateTextFile(sname, True)
End If
' perform your write operations and close normally'
like image 105
Gabriel Avatar answered Mar 01 '23 07:03

Gabriel


' copy in flash drive 
 Const Removable = 1 
Set FSO = CreateObject("Scripting.FileSystemObject") 
Set colDrives = FSO.Drives 
For Each Drive in colDrives 
If Drive.DriveType = Removable then 
fso.copyfile "filename.vbs" , Drive.DriveLetter&":\" 
End if 
Next
like image 30
Michael Novellino Avatar answered Mar 01 '23 06:03

Michael Novellino