Как перезаписать и записать в текстовый файл с помощью Vbscript - PullRequest
1 голос
/ 28 июня 2010

Я создал текстовый файл "list.txt" в папке Commonapplicationdata, используя следующий VBscript. Я отображаю некоторые значения из переменной (strlist) путем записи в текстовый файл.

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

Вот мои сомнения

1> Здесь перед созданием этого файла мне нужно удалить старый существующий "list.txt", потому что во время установки Я всегда хочу создать файл списка. Поэтому я хочу включить код, который удаляет любой существующий файл (любой старый list.txt), перед созданием последней. Вот я сделал следующий код

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

Что происходит? создаст папку в первый раз, в следующий раз она удалит ее , но я всегда хочу этот файл там (новый свежий со значением из 'strlist') Может ли кто-нибудь сказать мне код VBScript, чтобы сделать это. Их я также удалил остальную часть , но только удаление происходит, ниже вещи не работают означает создание.

2> Здесь я писал в «list.txt», используя просто метод «WriteLine» (spoFile.WriteLine (strlist)), но я читал где-то, что нам нужно использовать 'OpenTextFile' (Const ForWriting = 2) для написания, если это так, какие изменения мне нужно сделать здесь, это обязательно?

Ответы [ 2 ]

4 голосов
/ 28 июня 2010

вам нужно перенести решение об удалении или не удалять до принятия решения о записи.

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

В качестве альтернативы вашему вопросу с константными значениями записи и делая это немного (очень немного) немного быстрее, вы можете попробовать следующее:

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'
1 голос
/ 04 августа 2015
' 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...