Resultat nicht ausgeben, sondern in eine Textdatei speichern
Marco Eder
- vb-script
Hallo Forum
Ich bins schon wieder. Ich dachte zuerst, ich frage mal in einem anderen Forum nach (2 Threads innerhalb einer Stunde sind ein bisschen viel), warte allerdings schon lange auf eine Antwort. Und da habe ich gemerkt, dass das hier immer noch das beste Forum ist... So genug geschleimt :-) Hoffe ich bekomme trotzdem eine Antwort.
Ich habe eine vbs Datei erstellt, welche sozusagen den dir Befehl von Dos ausführt. Er zeigt an, was sich im Laufwerk C: befindet, sowie unter Programme. Nur kommt dies in Form eines Fensters (ähnlich wie MSGBOX), ich jedoch möchte, dass er das in eine Textdatei schreibt...
Wie kann ich das bewerkstelligen?
Hier mal mein Code (Die Funktionen sind nebensächlich):
root = ExecuteDOS("DIR C:")
WScript.Echo root
WScript.Echo ASCIItoANSI(root)
programme = ExecuteDOS("DIR C:\Programme")
WScript.Echo programme
WScript.Echo ASCIItoANSI(programme)
Function ExecuteDOS(befehl)
Set wshshell = CreateObject("WScript.Shell")
Set fs = CreateObject("Scripting.FileSystemObject")
Set temp = fs.GetSpecialFolder(2)
temppath = temp.Path
ausgabe = temppath & "\ausgabe.txt"
kommando = "%COMSPEC% /C " & befehl & " > """ & ausgabe & """"
resultat = wshshell.Run(kommando, 1, True)
Set textstream = fs.OpenTextFile(ausgabe)
if not textstream.atEndOfStream then
ExecuteDOS = textstream.ReadAll
end if
textstream.Close
fs.DeleteFile ausgabe, True
End Function
Function ASCIItoANSI(text)
ersetzung = Split("132,228,129,252,142,196,154,220,153,214,148,246,225,223", ",")
ASCIItoANSI = text
For x = 0 to UBound(ersetzung) Step 2
ASCIItoANSI = Replace(ASCIItoANSI, Chr(ersetzung(x)), Chr(ersetzung(x+1)))
Next
End Function
Ein weiteres Problem ist, dass es immer doppelt ausgegeben wird. Also der Inhalt von Root wird zweimal angezeigt (genauso auch Programme).
Wichtiger ist mir aber, zu wissen, wie ich das in eine Textdatei abspeichern kann...
Wäre sehr dankbar für Hilfe! Und fühlt euch nicht vom Code erschlagen, der ist eigentlich nebensächlich... Dachte nur ich poste den auch mal, vielleicht ist der ja für eure Antworten (wenn eine kommt) hilfreich.
So, dass wäre vorest glaub alles :-)
Gruss Marco
Da mir niemand helfen konnte oder wollte, schreibe ich jetzt mal hin, wie ich es gelöst habe (Falls es jemand interessiert, oder das gleiche Problem hat)
Option explicit
Dim strText
Dim strFilepath
strText = "hallo hallo"
strFilepath = "C:\textfile.txt"
If WriteToFile(strText, strFilepath) Then
MsgBox "Der Text wurde erfolgreich in ein neues Textfile geschrieben!"
Else
MsgBox "Der Text konnte nicht in ein Textfile geschrieben werden!"
End If
Private Function WriteToFile(ByVal strText, ByVal strFilepath)
Dim objFSO
Dim objFile
WriteToFile = False
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists(strFilepath) Then
MsgBox "Es existiert schon ein Textfile mit dem geleichen Namen in diesem Ordner!"
Else
On Error Resume Next
Set objFile = objFSO.CreateTextFile(strFilepath, 2)
If Err.Number <> 0 Then
MsgBox "Ein Fehler mit der Nummer " & Err.Number & " ist aufgetreten!"
Else
objFile.WriteLine (strText)
objFile.Close
set objFile = Nothing
WriteToFile = True
End If
End If
set objFSO = Nothing
End Function