Mit VBS eine datei auslesen?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
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. 

Woher ich das weiß:Berufserfahrung – Programmierer

MrCommandBlock 
Fragesteller
 25.10.2016, 18:36

Danke.. Also int in disem fall "s" die variable oder ?

0
MarkusGenervt  26.10.2016, 02:32
@MrCommandBlock

Schau Dir doch einfach mal die erste Codezeile an.

Also das solltest Du schon mindestens wissen.

0
Suboptimierer  26.10.2016, 10:21
@MrCommandBlock

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.

1
MarkusGenervt  28.10.2016, 08:45
@Suboptimierer

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 ;)

0

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.


MrCommandBlock 
Fragesteller
 28.10.2016, 08:35

naja ich muss die halt in ne variable reinbekommen Danke

0
MarkusGenervt  28.10.2016, 08:53
@MrCommandBlock

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
0