我收到类似"第10行和第2行的错误。无效的程序调用或参数"我在VBS以下运行
第10行和第2章。
Const ForAppending = 8
Set objFSO = CreateObject("scripting.filesystemobject")
GetLogPath = "C:\Users\MyName\Desktop\New Text Document.log"
If objFSO.FileExists(GetLogPath) Then
set objFile = objFSO.OpenTextFile(GetLogPath)
else
set objFile = objFSO.CreateTextFile(GetLogPath)
End If
set objFile = objFSO.OpenTextFile(GetLogPath , ForAppending)
objFile.Write(FormatDateTime(Now))
objFile.WriteLine(" : ")
objFile.Close
我的系统日期和时间设置如下。
Bulgaria Date and Time settings
但是当我在其他PC上运行相同的脚本并且工作正常时包含英语日期和时间设置。
< OutPut > 9/13/2017 5:44:15 PM:
请你帮忙解决这个案子。
答案 0 :(得分:0)
错误原因:错误编码格式
您收到错误的原因是您尝试写入文本文件的文本是保加利亚语,而您的文本文件的编码是ANSI(请参阅图片)默认情况下 。解决方案是将文件保存为通用编码, Unicode或UTF-8 。这些编码将保加利亚字符映射到Unicode标准。您必须以Unicode格式打开/创建日志文件才能写保加利亚字符。
经过测试的代码:
Const ForAppending = 8
Set objFSO = CreateObject("scripting.filesystemobject")
GetLogPath = "C:\Users\Kira\Desktop\url.log"
'The entire If condition of your code can be replaced with the following line of code:
Set objFile = objFSO.OpenTextFile(GetLogPath,ForAppending,True,-1) 'The 3rd parameter "True" is for creating the textfile if the textfile is already not created and the 4th parameter is for specifying the Encoding format. -1 means Unicode; for ANSI, leave the last param blank.
objFile.Write(FormatDateTime(Now))
objFile.WriteLine(" : ")
objFile.Close
<强>输出:强>
如需更多帮助,请点击HERE
编码格式:
答案 1 :(得分:0)
@Gurman感谢您的宝贵解决方案。一些我无法实现您的解决方案。所以我写了下面的函数(Function GetNow()
)来实现我的要求。
Const ForAppending = 8
strComputer = "."
Set objFSO = CreateObject("scripting.filesystemobject")
GetLogPath = "C:\Users\MyName\Desktop\New Text Document.log"
If objFSO.FileExists(GetLogPath) Then
set objFile = objFSO.OpenTextFile(GetLogPath)
else
set objFile = objFSO.CreateTextFile(GetLogPath)
End If
set objFile = objFSO.OpenTextFile(GetLogPath , ForAppending)
objFile.Write(GetNow)
objFile.WriteLine(" : ")
objFile.Close
Function GetNow()
Set objWMIServiceNow = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIServiceNow.ExecQuery("Select * from Win32_OperatingSystem")
For Each objItem in colItems
dtmLocalTime = objItem.LocalDateTime
dtmMonth = Mid(dtmLocalTime, 5, 2)
dtmDay = Mid(dtmLocalTime, 7, 2)
dtmYear = Left(dtmLocalTime, 4)
dtmHour = Mid(dtmLocalTime, 9, 2)
dtmMinutes = Mid(dtmLocalTime, 11, 2)
dtmSeconds = Mid(dtmLocalTime, 13, 2)
Next
GetNow = dtmMonth & "/" & dtmDay & "/" & dtmYear & " [" & dtmHour & ":" & dtmMinutes & ":" & dtmSeconds & "]"
End Function
感谢您的所有时间和支持:)
拉梅什