以下是我的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)
如有疑问,请阅读文档.您正在创建以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)
| 归档时间: |
|
| 查看次数: |
14347 次 |
| 最近记录: |