VBS Zeilen zählen?

Das Ergebnis basiert auf 3 Abstimmungen

geht 100%
geht nicht 0%

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
geht
Hatten wir doch schon in der letzten "Schulstunde" : https://www.gutefrage.net/frage/vbscript-opentextfile-funktioniert-nicht?foundIn=list-answers-by-user#answer-282291125
@Erzesel check es aber immer noch nicht XD

Ich wollte eigentlich unten bleiben, aber das könnte auch andere Anfänger interessieren...

Also ganz langsam und Schritt für Schritt:

Set fso = CreateObject("Scripting.FileSystemObject")

...speichert in der Variable fso ein Object, welches den Zugriff auf das Dateisystem ermöglicht.
https://msdn.microsoft.com/de-de/vba/language-reference-vba/articles/filesystemobject-object

Set f = fso.CreateTextFile("D:\pfad\Name.extension")

CreateTextfile (Dateiname [ ,Überschreiben [ ,Unicode ]] )
Erzeugt eine neue Datei und speichert das DateiHandle in der Variable f.
( DateiHandle = eindeutiger Verweis auf eine Datei)

Set f = fso.OpenTextFile ("D:\pfad\Name.extension")

OpenTextFile(Dateiname [ ,Iomode [ ,Erstellen [ ,Format ]]] )
Öffnet eine bestehende Datei. (kann theoretisch auch eine neue Datei erzeugen, wird jedoch kaum benutzt)

f.Write(String)
'.oder
f.Writeline(String)

schreiben schreiben einen String in die Datei mit den FileHandle f.

myStringVar=f.ReadLine
'oder
myStringVar=f.readall

lesen aus einer Datei (filehandle f) in eine StringVariable.

um beim Lesen in einer Datei einen Fehler zu vermeiden, prüft man vor dem Lesen ob man das Dateiende erreicht hat.
das könnte man mit if ... tun, da jedoch normal mehrere Zeilen gelesen werden, verwendet man eine Schleife:

Do Until f.AtEndOfStream
    myStringVar= f.ReadLine
Loop
'oder
Do Until f.AtEndOfStream
    myStringVar= f.Readall
Loop

(wobei f und fso beliebige Variablennamen sind ---fso hat sich jedoch irgendwie durchgesetzt---)

Butter bei die Fische:

Count_Lines.vbs:

Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile ("Count_Lines.vbs")


counter=0

Do Until f.AtEndOfStream
  myStringVar= f.ReadLine
' variable Counter bei jeder gelesenen Zeile um 1 erhöhen  
  counter=counter+1
Loop

msgbox counter
Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren
geht

Nutze die ReadLine-Methode beim Auslesen der Datei und zähle mit.

Das sollte ungefähr so aussehen:

' open file and so on ...
set counter = 0

do until fileHandler.AtEndOfStream
  fileHandler.ReadLine
  counter += 1
loop

Aber ist ungetestet.


igern 
Fragesteller
 15.06.2018, 14:48

Vielen dank :D hast mir sehr geholfen

0
igern 
Fragesteller
 15.06.2018, 14:48

teste ich jz aber macht Sinn :)

0
igern 
Fragesteller
 15.06.2018, 14:56
Objekt erforderlich: 'fileHandler'

Unter welchem Code muss ich fileHandler erstellen?

0
regex9  15.06.2018, 14:58
@igern

Da, wo der erste Kommentar in meinem Code steht.

0
igern 
Fragesteller
 15.06.2018, 21:23
@regex9

Ich meinte mit welchem befehl erstelle ich fileHandler?

0
igern 
Fragesteller
 15.06.2018, 15:00

Ich meinte wie erstelle ich die Datei?:

Set FileHandler = CreateObject("...")

?

(programmiere erst seit so 1-2 Monaten und bin noch nicht soooo erfahren)

0
igern 
Fragesteller
 15.06.2018, 15:52
@Erzesel

check es aber immer noch nicht XD

0
geht

Dafür musst du allerdings den Quellcode bereitstellen.

Ich kenne mich mit VBS nicht aus, aber wenn du die Möglichkeit hast, nach Zeichen zu Filtern, dann kannst du nach '\n' suchen, bzw der dort verwendeten Darstellung für Newlines.

Woher ich das weiß:Berufserfahrung – Programmierer

igern 
Fragesteller
 15.06.2018, 14:33

Verstehe ich nicht :/

0