Marco Eder: Resultat nicht ausgeben, sondern in eine Textdatei speichern

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

  1. 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