Mit VBS eine datei auslesen?
Ich möchte in VBS einfach eine datei auslesen, und dise dan in einer MsgBox ausgeben.
Kann mir jemand den code dazu geben ?
Ich hoffe, dass die anwendung so leicht wie bei Batch ist...:
set /p "x="<"PfadZurTextdatei\Textdatei.txt"
Nur dise Funktion in VBS
2 Antworten
Dim s Dim fso Dim file
Set fso = CreateObject("Scripting.FileSystemObject") Set file = fso.OpenTextFile("Datei auslesen.txt") s = file.ReadAll() file.Close
MsgBox s
Ich finde es leichter, wenn auch länger, weil die einzelnen Schritte nachvollziehbarer sind.
Schau Dir doch einfach mal die erste Codezeile an.
Also das solltest Du schon mindestens wissen.
s, fso und file sind Variablen. Die Zeilen mit "Dim" kann man auch weglassen, wenn man nicht "Option Explicit" verwendet. Es zeugt aber von gutem Programmierstil, die Variablen aufzuführen, die du verwenden möchtest.
Wenn du ein Fan von kurzem Code bist, kannst du versuchen, das alles in eine Zeile zu packen. Dann hast du aber das gleiche Problem mit der Wartbarkeit wie beim Batch.
MsgBox CreateObject("Scripting.FileSystemObject").OpenTextFile("Datei auslesen.txt").ReadAll()
Zum Beispiel weiß man bei dieser Variante nicht, ob nach Abarbeitung des Scripts die Datei automatisch wieder ordnungsgemäß geschlossen wird.
Das Nachschlagen in Handbüchern kann man sich sparen, indem man selbst die Datei schließt.
Das schöne bei Basic ist, dass alle offenen Dateien spätestens mit dem Beenden des Interpreters automatisch mit geschlossen werden (-> garbage collection). Daher ist es nicht unbedingt erforderlich – bei so einfachen Programmen –, auch immer wieder einen Close-Befehl hinterher zu schießen.
In Deinem Beispiel wird bereits das Handle zu "Datei auslesen.txt" mit der Heap-Freigabe der "file"-Variable geschlossen.
Aber es ist einfach sauberer ;)
Mit der Codezeile überlädst Du u.U. den Umgebungsspeicher.
Schau Dir mal diese Hilfe an:
FOR /?
Das geht viel eleganter.
Allerdings geht es noch sehr viel einfacher mit:
type "Meine Datei.txt" | more
Sogar gleich mit seitenweiser Pause-Funktion.
Ansonsten, was Suboptimierer sagt.
naja ich muss die halt in ne variable reinbekommen Danke
Wie gesagt, Suboptimierer's Beispiel ist schon ziemlich rund.
Aber ich würde da lieber eine Sicherheits-Prüfung vorschalten, denn wenn der anzuzeigende Text zu groß ist, kleistert Dir die MsgBox ratz-fatz den Bildschirm zu.
Daher solltest Du besser den Datei-Inhalt portionsweise ausgeben. Ich greife das oben mal auf:
For p = 0 To Len(s) Step 8192
MsgBox Mid(s, p, 8192)
Next
Danke.. Also int in disem fall "s" die variable oder ?