VBS .txt Inhalt vor schreiben löschen
Hallo,
ich habe folgendes Script.
Es funktioniert auch, nur das wenn ich es im Overwrite Modus öffne, schreibt es mir nur die erste Zeile.
Im Append Modus klappt es, wenn es aber öfter aufgerufen wird, und das ist definitiv der Fall, wird es immer wieder alles angehängt. Geht nicht!
Wie kann ich den Inhalt erst löschen und dann den neuen Inhalt schreiben, so das die Datei immer aktuell gehalten wird?
Danke
ich habe folgendes Script.
Es funktioniert auch, nur das wenn ich es im Overwrite Modus öffne, schreibt es mir nur die erste Zeile.
Im Append Modus klappt es, wenn es aber öfter aufgerufen wird, und das ist definitiv der Fall, wird es immer wieder alles angehängt. Geht nicht!
Wie kann ich den Inhalt erst löschen und dann den neuen Inhalt schreiben, so das die Datei immer aktuell gehalten wird?
Const HKLM = &H80000002
Set objReg = GetObject("winmgmts://" & strHost & _
"/root/default:StdRegProv")
Const strBaseKey = _
"Software\Microsoft\Windows\CurrentVersion\Uninstall\"
objReg.EnumKey HKLM,strBaseKey,arrSubKeys
For Each strSubKey In arrSubKeys
intRet = objReg.GetStringValue(HKLM,strBaseKey & strSubKey,_
"DisplayName",strValue)
If intRet <> 0 Then
intRet = objReg.GetStringValue(HKLM,strBaseKey & strSubKey,_
"QuietDisplayName",strValue)
End If
If (strValue <> "") and (intRet = 0) Then
set fs = CreateObject("Scripting.FileSystemObject")
logfile =WshNetwork.Computername &"-Software.txt"
set handle = fs.OpenTextFile(logfile,8,true)
softwareName = strValue
handle.WriteLine softwareName
handle.close
End If
Danke
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 233170
Url: https://administrator.de/forum/vbs-txt-inhalt-vor-schreiben-loeschen-233170.html
Ausgedruckt am: 16.05.2025 um 17:05 Uhr
8 Kommentare
Neuester Kommentar
Hallo deathholly, Willkommen im Forum!
In deinem Code haben sich doch einige Fehler eingeschlichen, oder du hast nicht den kompletten Code gepostet, bzw. ist der Nicht-Verwendung von Tags geschuldet.
Ich denke du suchst dieses Script zum erstellen einer Liste der installierten Software (das kürzt das ganze etwas ab)
:
Registry-Unterschlüssel durchsuchen
Grüße Uwe
p.s. das nächste mal bitte deinen Code mit Tags auszeichen. Merci.
In deinem Code haben sich doch einige Fehler eingeschlichen, oder du hast nicht den kompletten Code gepostet, bzw. ist der Nicht-Verwendung von Tags geschuldet.
Ich denke du suchst dieses Script zum erstellen einer Liste der installierten Software (das kürzt das ganze etwas ab)
Registry-Unterschlüssel durchsuchen
Grüße Uwe
p.s. das nächste mal bitte deinen Code mit Tags auszeichen. Merci.
Du solltest am besten alle Werte aus der Registry in der Schleife in einem String sammeln und diesen dann zum Schluss nach der Schleife gesammelt in die Datei schreiben (Im 2 Parameter von OpenTextfile dann eine 2 verwenden damit das File überschrieben wird.)
siehe dazu auch den Link zum Script was ich oben gepostet habe, dort ist das so gemacht ...
Zu den Fehlern:
Was soll ifIf, fehlt ein Return ..
log file ?? Leerzeichen in der Variablen geht nicht!!
Deinem for each Konstrukt fehlt das Next das finde ich nirgendwo (-edit- ist ja ein Ausschnitt, aber das sollte man auch vorher erwähnen)
completecontent = ""
for each .....
.....
completecontent = completecontent & strValue & vbNewline
.....
next
fs.OpenTextFile(logfile,2,true)
Zu den Fehlern:
Was soll ifIf, fehlt ein Return ..
End IfIf (strValue <> "") and (intRet = 0) Then
log file ?? Leerzeichen in der Variablen geht nicht!!
fs.OpenTextFile(log file,8,true)
Deinem for each Konstrukt fehlt das Next das finde ich nirgendwo (-edit- ist ja ein Ausschnitt, aber das sollte man auch vorher erwähnen)
Zitat von @deathholly:
Ja, das dachte ich mir ja auch, aaaaber es wird leider nur die erste Zeile geschrieben!
Ist ja auch klar wenn du innerhalb der Schleife in die Datei schreibst und den zweiten Parameter von OpenTextfile auf 2 setzt, dann wird bei jedem Schleifendurchlauf die Datei überschrieben und es befindet sich zum Schluss nur der letzte Wert darin !Ja, das dachte ich mir ja auch, aaaaber es wird leider nur die erste Zeile geschrieben!
Ist aber alles schön im obigen verlinkten Script abzuschauen ....
Also nochmal Beispiele zum Verständnis:
Beispiel Schreiben außerhalb der Schleife (mit vorherigem Sammeln in einer Variablen)
Set fso = CreateObject("Scripting.Filesystemobject")
arr = Array("Adobe","Sun","Microsoft")
software = ""
For i = 0 To UBound(arr)
' Hänge jeden Wert an die Variable mit einem Zeilenumbruch an
software = software & arr(i) & vbNewLine
Next
' Öffne Datei im Überschreibmodus
fso.OpenTextFile("demo.txt",2,True).Write(software)
Beispiel: Schreiben in der Schleife
Set fso = CreateObject("Scripting.Filesystemobject")
arr = Array("Adobe","Sun","Microsoft")
' Öffne Datei im Überschreibmodus
Set f = fso.OpenTextFile("demo.txt",2,True)
For i = 0 To UBound(arr)
' Schreibe Wert jeweils in eine eigene Zeile in der Datei
f.WriteLine(arr(i))
Next
' Schließe Datei
f.Close
Moin,
du könntest die Datei vorher einfach löschen?
Das setzt du zwischen
und
Solltest du vielleicht noch mit einem:
Gruß
PS: Ungetestet und überhaupt
PPS: Ansonsten hat colinardo schon alles geschrieben und seins ist sauberer
du könntest die Datei vorher einfach löschen?
fso.deleteFile (logfile)
Das setzt du zwischen
logfile =WshNetwork.Computername &"-Software.txt"
set handle = fs.OpenTextFile(logfile,8,true)
Solltest du vielleicht noch mit einem:
If (fs.FileExists(logfile)) Then
fso.deleteFile (logfile)
Gruß
PS: Ungetestet und überhaupt
PPS: Ansonsten hat colinardo schon alles geschrieben und seins ist sauberer