2017-09-13 1 views
1

ich Störung erhalte wie "Linie 10 und Char 2. ungültigen Prozeduraufruf oder Argument" i läuft unter VBSobjFile.Write (Now) ungültig Prozeduraufruf oder Argument

Linie 10 und Char 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 

Mein System Datum und Uhrzeit Einstellungen wie folgt.

Bulgaria Date and Time settings

Aber wenn ich lief gleiche Skript in anderen PC und arbeiten gut, die englische Sprache Datum und Uhrzeit enthalten.

< OutPut> 2017.09.13 17.44.15:

Könnten Sie bitte zu diesem Fall helfen.

+0

Warum brauchen Sie auch 'FormatDateTime'? Hast du versucht, 'Now' zu schreiben, wie es in der Datei ist? –

+0

Ja, ich habe es mit "objFile.Write Now" und "objFile.Write (Now)" versucht. und ich beobachtete dasselbe Problem für alle Datums- und Zeitfunktionen wie Datum, Tag ...... [Link] (https://www.w3schools.com/asp/asp_ref_vbscript_functions.asp) –

+0

Ich habe irgendwo gelesen, dass VBScript möglicherweise ausgeführt wird in Probleme für nicht englische Gebietsschemas ... versuchen Sie, die Datums- und Uhrzeitfunktionen durch das Verketten der Datepartfunktion wie Tag, Monat und Jahr manuell zu formatieren –

Antwort

0

@Gurman Vielen Dank für Ihre wertvolle Lösung. Einige, wie ich Ihre Lösung nicht implementieren kann. Also habe ich unten Funktion (Function GetNow()) geschrieben, um meine Anforderung zu erreichen.

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 

Vielen Dank an alle für Ihre Zeit und Unterstützung :)

Ramesh

0

Ursache: FALSCH Kodierformate

Sie erhalten den Fehler, da der Text, die Sie versuchen, in die Textdatei in bulgarischer Sprache ist, während Codierung der Textdatei ANSI ist, zu schreiben (siehe das Bild) standardmäßig. Die Lösung besteht darin, Ihre Datei in einer universellen Codierung zu speichern, entweder Unicode oder UTF-8. Diese Codierungen ordnen die bulgarischen Zeichen dem Unicode-Standard zu. Sie müssen Ihre Protokolldatei im Unicode-Format öffnen/erstellen, um bulgarische Zeichen schreiben zu können.

Getestet Code:

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 

OUTPUT:

enter image description here

Weitere Hilfe klicken HERE

Kodierformate:

Encoding

+1

Der Kommentar und der Link verweisen auf die CreateTextFile-Methode; Der Code verwendet OpenTextFile. Der vierte Arg von OpenTextFile ist * nicht * Boolean, aber TriState. –

+0

@ Ekkehard.Horner Mein schlechtes. Ich habe den Link und die Lösung aktualisiert – Gurman

Verwandte Themen