Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Parameterdatei für VBS





Frage

Hallo Experten, ich soll in VBS ein Programm mit Parameterübergabe schreiben. Ich wollte mir die Arbeit vereinfachen und nicht alle Parameter einzeln eingeben, sondern diese in einer Parameterdatei hinterlegen. Der Programmaufruf soll so aussehen Test.vbs Anton oder Test.vbs Berta In der Parameterdatei steht dann [Anton] Par1=abc Par2=xyz [Berta] Par1=fff Par2=tzu Par3=ruthzi und das Programm wird dann mit diesen Parametern ausgeführt (es können unterschiedlich viele sein) Wie muss ich ddie Parameter aus der Datei auslesen? Danke für Eure Hilfe! Gruß Uppe

Antwort 1 von Frulu

Zitat:
Ich wollte mir die Arbeit vereinfachen und nicht alle Parameter einzeln eingeben,

Ich fürchte Du tust genau das Gegenteil. Du machst Dir einen Haufen unnötiger Arbeit. Nimm doch lieber zwei Batchdateien für den Aufruf. Eine nennst Anton und eine Bertha. Dann musst Du auch keine Parameter von Hand übergeben.

Antwort 2 von Uppe

Hallo Frulu,

vielen Dank für Deine Antwort.

Das Problem ist nur, dass es sehr viele Datensätze werden und das Programm selbst ziemlich lang werden wird.
So hätte ich dann bei Änderungen im Ablauf einen ziemlich Aufwand.

Gruß Uppe

Antwort 3 von manei

Hallo,

was FRutu schreibt hat schon seine Vorteile.

Aber wenn Du unbedingt das über eine TextDatei machen willst, solltest Du als erstes die Variablennamen weglassen (par1=???).

VBS arbeitet etwas anders als eine Batch.

Du benötigst ein Scripting.FileSystemObject z.B.

Set fs = CreateObject("Scripting.FileSystemObject ")
Set f = fs.OpenTextFile("Pfad\Name.txt", 1)

do
x = f.ReadLine
If x = "Anton]" Then
para1 = f.ReadLine
para2 = f.ReadLine
ElseIf x = "[Berta] Then
parb1 = f.ReadLine
parb2 = f.ReadLine
parb3 = f.ReadLine
ElseIf x = "xyz" Then
usw.
End If
Loop Until f.AtEndOfStream

In der Textdatei keine Leerzeilen, dann kannst du alles hintereinander einlesen.

MfG maneich

Antwort 4 von Frulu

Zitat:
So hätte ich dann bei Änderungen im Ablauf einen ziemlich Aufwand.

Ich bin mir nicht sicher, ob wir uns richtig verstehen. Ich dachte daran, dass man die ganzen Parameter in eine Batchdatei reinschreibt.
blabla.vbs fff tzu ruthzi

Der Aufwand Parameter in der Batchdatei zu ändern dürfte identisch mit dem sein, die Parameter in der Parameterdatei zu ändern. Ok, bei sehr vielen Parametern wäre es in der Batch nicht so übersichtlich, dafür sparst Du Dir die Angabe von den ganzen "ParX=".

Was das Parsen dieses ini-Dateiformats angeht, schau Dir die Stringbearbeitungsfunktionen instr(), left(), mid() und right() an. Ausserdem brauchst Du wegen der variablen Anzahl von Parametern die ReDim-Funktion, da Du mit Dim einen Array nicht zur Laufzeit mit einer Grösse dimensionieren kannst, die zum Zeitpunkt des Programmierens noch nicht bekannt ist.
Du solltest auch daran denken, das Ganze fehlertolerant gegenüber Leerzeilen, Leerzeichen und Gross- und Kleinschreibung zu gestalten. Dabei können replace() und lcase() bzw. ucase() helfen. Ausserdem brauchst Du noch ne Fehlerbehandlung, falls bestimmte Parameternummmern vergessen oder doppelt vergeben wurden, oder das Dateiformat nicht gültig sein sollte.
Du siehst, da hängt einiges dran, was Arbeit macht.
Wenn es nicht auf dir Reihenfolge der Parameter ankommt, wäre es wesentlich bequemer, wenn Du das Dateiformat etwas änderst, damit Du es bequem mit split() einlesen kannst:

"Anton","abc","xyz"
"Berta","fff","tzu","ruthzi"

So hättest Du nur zwei Zeilen, die Du nach dem Komma splitten könntest und Du müsstest den Array dann nicht selbst dimensionieren.

PS: Habe dies geschrieben, bevor ich maneis Post gesehen habe. Deshalb poste ich es jetzt auch ;-)

Antwort 5 von Frulu

Öhm, die Anführungszeichen kann (bzw. sollte) man bei meinem Vorschlag weglassen:

Anton,abc,xyz
Berta,fff,tzu,ruthzi


Antwort 6 von Uppe

Hallo,

vielen Dank für Eure Hilfe. Ich werd mal schaun, wie weit ich damit komme.

Danke
Uppe