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, 1412 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 ..
Ähnliche Inhalte
Batch & Shell
gelöst Inhalt einer .txt per Script bearbeiten (2)

Frage von hanni007 zum Thema Batch & Shell ...

Microsoft Office
gelöst Excel VBA - Inhalte und Dateiname von txt-Dateien automatisch in Excel importieren (2)

Frage von Booster07 zum Thema Microsoft Office ...

Exchange Server
gelöst Inhalt von Postfächern in Exchange löschen (9)

Frage von m.reeger zum Thema Exchange Server ...

Windows 7
gelöst Batch für User-TEMP-Ordner und Inhalte löschen (2)

Frage von planetIT2016 zum Thema Windows 7 ...

Neue Wissensbeiträge
Viren und Trojaner

CNC-Fräsen von MECANUMERIC werden (ggf.) mit Viren, Trojanern, Würmern ausgeliefert

(4)

Erfahrungsbericht von anteNope zum Thema Viren und Trojaner ...

Windows 10

Windows 10: Erste Anmeldung Animation deaktivieren

(3)

Anleitung von alemanne21 zum Thema Windows 10 ...

Exchange Server

Mittels Batch-Script Exchange-Logs sammeln und archivieren

Anleitung von beidermachtvongreyscull zum Thema Exchange Server ...

Heiß diskutierte Inhalte
Verschlüsselung & Zertifikate
SSL Zertifikat für HTTPS (33)

Frage von Hendrik2586 zum Thema Verschlüsselung & Zertifikate ...

Grafikkarten & Monitore
24" oder 27" mit Full HD oder doch mehr Auflösung? (21)

Frage von brutzler zum Thema Grafikkarten & Monitore ...

Router & Routing
gelöst Linksys wrt1200ac v2 mit dd-wrt: keine vlan-einstellungen im GUI (15)

Frage von Pixi123 zum Thema Router & Routing ...

Netzwerke
Ip Adressenkonflikt bei Großfamilie (12)

Frage von gunter zum Thema Netzwerke ...