Hallo,
ich versuche gerade mir eine Logdatei zu schreiben, für meine Rechner im Netzwerk, das geht auch soweit ganz gut, nur das ich immer wenn ich die Logdatei das zweite mal überschreibe, sie komplett geleert wird.
Hier mal mein Code:
Kann sich das jemand von Euch erklären? Wenn ich das Skript das erstemal ausführe wird die Datei angelegt, führe ich es ein zweitesmal aus ist auch noch alles OK, aber beim dritten mal wird das komplette Skript geleert.
gruß klaus.
ich versuche gerade mir eine Logdatei zu schreiben, für meine Rechner im Netzwerk, das geht auch soweit ganz gut, nur das ich immer wenn ich die Logdatei das zweite mal überschreibe, sie komplett geleert wird.
Hier mal mein Code:
PHP:
Option Explicit
'Username auslesen
DIM NetworkObj
SET NetworkObj = CreateObject("WScript.Network")
DIM UserNameSAM
UserNameSAM=networkObj.UserName
'Clientname auslesen
DIM WSHShell
SET WSHShell = WScript.CreateObject("WScript.Shell")
DIM WSHEnvOS
SET WSHEnvOS = WSHShell.Environment("Process")
DIM client
client = WshEnvOS("COMPUTERNAME")
DIM WSHEnvPrg
SET WSHEnvPrg = WSHShell.Environment("Process")
DIM fs
SET fs = CreateObject ("Scripting.FileSystemObject")
'Logdatei erzeugen
DIM server
DIM clientname
server= "C:\log"
clientname = server & "\Log.htm"
WshShell.Run "%comspec% /c if not exist " & server & "\. md " & server ,0,TRUE
IF fs.FileExists(clientname) THEN
'Wenn die Datei existiert wird sie ausgelesen
ReadFile clientname, client, UserNameSAM
ELSE
SET fs = CreateObject ("Scripting.FileSystemObject")
DIM clientlog
SET clientlog = fs.OpenTextFile (clientname,8,TRUE)
'Logdatei schreiben:
clientlog.Writeline "<html>"
clientlog.Writeline "<head>"
clientlog.Writeline " <title>Logdatei</title>"
clientlog.Writeline "</head>"
clientlog.Writeline "<body>"
clientlog.Writeline " <table border=1>"
clientlog.Writeline " <tr><td><b>Rechnername:</b></td><td><b>Username:</b></td><td><b>Datum:</b></td></tr>"
clientlog.Writeline " <tr><td>" & client & "</td><td>" & UserNameSAM & "</td><td>" & now & "</td></tr>"
clientlog.Writeline " </table>"
clientlog.Writeline "</body>"
clientlog.Writeline "</html>"
clientlog.close
END IF
WScript.Quit
'=======================Funktionen==================
Function ReadFile (ByVal sFile, ByVal client, ByVal UserName)
Dim fs
Dim oFile
' Verweis auf das FileSystemObject erstellen
Set fs = CreateObject("Scripting.FileSystemObject")
' Existiert die Datei überhaupt?
If fs.FileExists(sFile) Then
' Datei öffnen
Set oFile = fs.OpenTextFile(sFile)
' Alles lesen
DIM neuesLog
neuesLog = ""
DIM i
i = 0
DIM temp
DO WHILE NOT oFile.AtEndOfStream
temp = oFile.ReadLine
IF i = 7 THEN
neuesLog = neuesLog & " <tr><td>" & client & "</td><td>" & UserNameSAM & "</td><td>" & now & "</td></tr>" & vbCR
END IF
IF InStr(temp, client) > 0 THEN
IF InStr(temp, UserNameSAM) > 0 THEN
'Wenn der Eintrag existiert, dann wird er gelöscht.
temp = ""
END IF
END IF
IF temp = "" THEN
ELSE
neuesLog = neuesLog & temp & vbCR
END IF
i = i + 1
LOOP
' Datei schließen
oFile.Close
WScript.Echo neuesLog
'Neue Log schreiben
IF fs.FileExists(clientname) THEN
fs.DeleteFile(clientname)
END IF
SET fs=NOTHING
SET fs = CreateObject ("Scripting.FileSystemObject")
DIM clientlog
SET clientlog = fs.OpenTextFile (clientname,8,TRUE)
'Logdatei schreiben:
clientlog.Writeline neuesLog
clientlog.close
End If
End Function
Kann sich das jemand von Euch erklären? Wenn ich das Skript das erstemal ausführe wird die Datei angelegt, führe ich es ein zweitesmal aus ist auch noch alles OK, aber beim dritten mal wird das komplette Skript geleert.
gruß klaus.