Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

VBS .txt Inhalt vor schreiben löschen

Frage Entwicklung VB for Applications

Mitglied: deathholly

deathholly (Level 1) - Jetzt verbinden

20.03.2014, aktualisiert 10:49 Uhr, 1375 Aufrufe, 8 Kommentare

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?

01.
Const HKLM = &H80000002 
02.
Set objReg = GetObject("winmgmts://" & strHost & _ 
03.
    "/root/default:StdRegProv") 
04.
Const strBaseKey = _ 
05.
    "Software\Microsoft\Windows\CurrentVersion\Uninstall\"  
06.
objReg.EnumKey HKLM,strBaseKey,arrSubKeys 
07.
       
08.
For Each strSubKey In arrSubKeys 
09.
    intRet = objReg.GetStringValue(HKLM,strBaseKey & strSubKey,_ 
10.
        "DisplayName",strValue) 
11.
    If intRet <> 0 Then  
12.
        intRet = objReg.GetStringValue(HKLM,strBaseKey & strSubKey,_ 
13.
        "QuietDisplayName",strValue) 
14.
    End If 
15.
 
16.
If (strValue <> "") and (intRet = 0) Then 
17.
 
18.
        set fs = CreateObject("Scripting.FileSystemObject") 
19.
        logfile =WshNetwork.Computername &"-Software.txt" 
20.
        set handle = fs.OpenTextFile(logfile,8,true) 
21.
  
22.
        softwareName = strValue 
23.
        handle.WriteLine softwareName 
24.
        handle.close 
25.
End If
Danke
Mitglied: colinardo
20.03.2014, aktualisiert um 10:23 Uhr
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) :
http://www.administrator.de/contentid/230915

Grüße Uwe

p.s. das nächste mal bitte deinen Code mit Tags auszeichen. Merci.
Bitte warten ..
Mitglied: deathholly
20.03.2014 um 10:25 Uhr
Hallo,
danke für die schnelle Hilfe.
Das Script ist nicht komplett kopiert, dies hier ist nur der wesentliche Teil.

Es funktioniert ja reibungslos, und so wie die Liste rauskommt ist die auch ok, nur das er mir immer die komplette Liste dann anhängt, das möchte ich vermeiden.
Was denn für gewaltige Fehler? Bin gern bereit zu lernen.
Es muss doch irgendwie gehen in der Funktion wenn ich die txt öffne, sie vorher zu löschen?
Bitte warten ..
Mitglied: colinardo
20.03.2014, aktualisiert um 10:42 Uhr
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.)
01.
completecontent = "" 
02.
for each ..... 
03.
   ..... 
04.
   completecontent = completecontent & strValue & vbNewline 
05.
   ..... 
06.
next  
07.
 
08.
fs.OpenTextFile(logfile,2,true)
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 ..
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)
Bitte warten ..
Mitglied: Meierjo
20.03.2014 um 10:39 Uhr
Hallo Deathholly

Ich bin jetzt auch nicht so der VBS-Spezi, aber wenn du

set handle = fs.OpenTextFile(log file,8,true)

durch

set handle = fs.OpenTextFile(logfile,2,true)

ersetzt, sollte das Logfile jedesmal neu angelegt werden

gruss meierjo
Bitte warten ..
Mitglied: deathholly
20.03.2014 um 10:49 Uhr
Zu den Fehlern, die haben sich beim kopieren eingeschlichen.
Ok, werde mich bessern was posten von Codes angeht. Wollte hier nicht jemandem zumuten das ganze Script durchzurosten.

Ich werde es mal versuchen.
danke
Bitte warten ..
Mitglied: deathholly
20.03.2014 um 10:50 Uhr
@ Meierjo

Ja, das dachte ich mir ja auch, aaaaber es wird leider nur die erste Zeile geschrieben!
Bitte warten ..
Mitglied: colinardo
20.03.2014, aktualisiert um 13:10 Uhr
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 !

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)
01.
Set fso = CreateObject("Scripting.Filesystemobject") 
02.
arr = Array("Adobe","Sun","Microsoft") 
03.
software = "" 
04.
For i = 0 To UBound(arr) 
05.
        ' Hänge jeden Wert an die Variable mit einem Zeilenumbruch an 
06.
	software = software & arr(i) & vbNewLine 
07.
Next 
08.
' Öffne Datei im Überschreibmodus 
09.
fso.OpenTextFile("demo.txt",2,True).Write(software)
Beispiel: Schreiben in der Schleife
01.
Set fso = CreateObject("Scripting.Filesystemobject") 
02.
arr = Array("Adobe","Sun","Microsoft") 
03.
' Öffne Datei im Überschreibmodus 
04.
Set f = fso.OpenTextFile("demo.txt",2,True) 
05.
For i = 0 To UBound(arr) 
06.
        ' Schreibe Wert jeweils in eine eigene Zeile in der Datei 
07.
	f.WriteLine(arr(i)) 
08.
Next 
09.
' Schließe Datei 
10.
f.Close
Bitte warten ..
Mitglied: Xaero1982
20.03.2014 um 21:06 Uhr
Moin,

du könntest die Datei vorher einfach löschen?

01.
 fso.deleteFile (logfile)
Das setzt du zwischen

01.
 logfile =WshNetwork.Computername &"-Software.txt" 
und
01.
set handle = fs.OpenTextFile(logfile,8,true) 

Solltest du vielleicht noch mit einem:

01.
If (fs.FileExists(logfile)) Then 
02.
     fso.deleteFile (logfile)
Gruß

PS: Ungetestet und überhaupt
PPS: Ansonsten hat colinardo schon alles geschrieben und seins ist sauberer
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...