VBS创建CSV文件,然后向其添加额外的行

Sea*_*and 2 csv vbscript rows

以下是我的VBS代码.我承认,我对此非常陌生,因为我把它作为工作中的工作.我需要创建一个登录/注销脚本,它将捕获某些信息并将其存储在csv文件中.我能够获取信息并将其存储在csv文件中,但是当我再次尝试时,我希望它创建另一行并在那里存储更新的信息.我不断得到这些亚洲人物.似乎是什么问题.

这是我第二次点击我的注销脚本时所得到的:਍沩牵琠硥⁴潧獥栠牥⹥਍

' ******************** Log Off Script **********************************
'Script to write Logoff Data Username, Computername to eventlog.

Dim objShell, WshNetwork, PCName, UserName, strMessage, strContents, logDate, logTime
Dim strQuery, objWMIService, colItems, strIP, rowCount

' Constants for type of event log entry
const EVENTLOG_AUDIT_SUCCESS = 8

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("WScript.Shell")
Set WshNetwork = WScript.CreateObject("WScript.Network")

logDate = Date()
logTime = Time()
PCName = WshNetwork.ComputerName 
UserName = WshNetwork.UserName  
strMessage = "Logoff Event Data" & "PC Name: " & PCName & "Username: " & UserName & "Date: " & logDate & "Time: " & logTime

If (objFSO.FileExists("test.csv")) Then
WScript.Echo("File exists!")
dim filesys, filetxt 
Const ForReading = 1, ForWriting = 2, ForAppending = 8 
Set filesys = CreateObject("Scripting.FileSystemObject") 
Set filetxt = filesys.OpenTextFile("test.csv", ForAppending, True) 
filetxt.WriteLine(vbNewline & "Your text goes here.") 
filetxt.Close 

Else
rowCount = rowCount + 1
WScript.Echo("File does not exist! File Created!")
Set csvFile = objFSO.CreateTextFile("test.csv", _ 
ForWriting, True)

objShell.LogEvent EVENTLOG_AUDIT_SUCCESS, strMessage
csvFile.Write strMessage
csvFile.Writeline

End If  

WScript.Quit
Run Code Online (Sandbox Code Playgroud)

Ans*_*ers 5

如有疑问,请阅读文档.您正在创建以Unicode格式(3文件第三的说法CreateTextFile设置True):

Set csvFile = objFSO.CreateTextFile("test.csv", _
ForWriting, True)
Run Code Online (Sandbox Code Playgroud)

但是您以ASCII格式打开现有(Unicode)文件(未指定OpenTextFile的 4 参数):

Set filetxt = filesys.OpenTextFile("test.csv", ForAppending, True) 
Run Code Online (Sandbox Code Playgroud)

要么一直打开Unicode格式的文件,要么永远不要.

此外,不必创建多个FileSystemObject实例.只需在整个脚本中使用您在开头创建的那个.您还可以对文本流对象使用相同的变量.

如果要使用Unicode格式,则需要将以上两行更改为:

Set csvFile = objFSO.CreateTextFile("test.csv", False, True)
...
Set csvFile = objFSO.OpenTextFile("test.csv", ForAppending, False, True)
Run Code Online (Sandbox Code Playgroud)

否则进入这个:

Set csvFile = objFSO.CreateTextFile("test.csv")
...
Set csvFile = objFSO.OpenTextFile("test.csv", ForAppending)
Run Code Online (Sandbox Code Playgroud)