VBS: Logdatei erzeugen und überschreiben

KlaDi

Erfahrenes Mitglied
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:
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.
 
Problem erkannt, Gefahr gebannt. :D

Also es liegt daran, das ich dacht vbCR währe ein Zeilenumbruch, ist es aber nicht. Einfach vbCr durch vbCRlf ersetzen und es klappt wunderbar.

gruß klaus.
 
Zurück