【问题标题】:How to over write and write in to a textfile by using Vbscript如何使用 Vbscript 过度读取和写入文本文件
【发布时间】:2017-06-23 06:14:55
【问题描述】:

我使用以下 VBscript 在 commonapplicationdatafolder 中创建了一个文本文件“list.txt”。我正在显示一些 通过写入文本文件从变量(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 代码来做到这一点。他们的我也删除了 Else 部分,但只是删除,下面的东西不起作用意味着创建。

2>在这里,我通过简单的“WriteLine”方法(spoFile.WriteLine(strlist))写入“list.txt”,但我在需要使用的地方读到了 'OpenTextFile'(Const ForWriting = 2) 用于写作,如果是这种情况我需要在这里做些什么改变,是强制性的吗?

【问题讨论】:

  • 'OpenTextFile'(Const ForWriting = 2) 用于写入,是强制的吗?或者干脆 spoFile.WriteLine(strlist) 就足够了

标签: vbscript


【解决方案1】:

您需要在写入决定之前移动您的删除或不删除决定。

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'

【讨论】:

  • 没关系,它可以工作,我的编码中有任何错误的逻辑,我是 vbscript 的新手
  • 'OpenTextFile'(Const ForWriting = 2) 用于写入,是强制的吗?或者干脆 spoFile.WriteLine(strlist) 就足够了
  • 实际上彼得你只需要写常量来打开一个现有的文本文件。在您的情况下,您正在删除它并创建一个新的。我已经修改了我的答案以添加使用您正在谈论的条件的替代方法。
  • 没错,不需要删除操作,只需.WriteLine(strlist)会覆盖之前的文件。但是要求是这样的
【解决方案2】:
' 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

【讨论】:

    猜你喜欢
    • 2010-11-11
    • 2011-03-08
    • 2012-09-15
    • 1970-01-01
    • 2010-10-25
    • 1970-01-01
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多