VBS Zeilen zählen?
Ich schreibe zur Zeit ein Programm und dieses soll sich selber auslesen, wie viele Zeilen das Programm selber hat. Geht dies und wenn ja, wie?
3 Stimmen
4 Antworten
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
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.
Objekt erforderlich: 'fileHandler'
Unter welchem Code muss ich fileHandler erstellen?
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.
Ich meinte wie erstelle ich die Datei?:
?
(programmiere erst seit so 1-2 Monaten und bin noch nicht soooo erfahren)