Aus einer vbs eine zweite vbs starten und ein Array übergeben?
Hallo,
vbsdatei1.vbs hat diesen Inhalt
vbsdatei2.vbs hat diesen Inhalt
Führt man vbsdatei1.vbs aus, kommt als Fehler in Zeile 4 "Typen unverträglich"
Ich kann aber z.B. eine Variable übergeben, also:
oder ein Array an eine Sub übergeben:
Wie übergibt man ein Array an eine neue vbs-Datei?
Danke
Martin
vbsdatei1.vbs hat diesen Inhalt
set wshshell = CreateObject("WScript.Shell")
redim testarr(2)
testarr(0) = "eins"
wshshell.run "vbsdatei2.vbs " & testarr
vbsdatei2.vbs hat diesen Inhalt
wscript.echo ubound(wscript.arguments(0))
Führt man vbsdatei1.vbs aus, kommt als Fehler in Zeile 4 "Typen unverträglich"
Ich kann aber z.B. eine Variable übergeben, also:
set wshshell = CreateObject("WScript.Shell")
myvari = "eins"
wshshell.run "vbsdatei2.vbs " & myvari
oder ein Array an eine Sub übergeben:
set wshshell = CreateObject("WScript.Shell")
redim testarr(2)
testarr(0) = "eins"
mysub testarr
sub mysub(uebergebenesarray)
wscript.echo ubound(uebergebenesarray)
end sub
Wie übergibt man ein Array an eine neue vbs-Datei?
Danke
Martin
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 170417
Url: https://administrator.de/forum/aus-einer-vbs-eine-zweite-vbs-starten-und-ein-array-uebergeben-170417.html
Ausgedruckt am: 14.04.2025 um 18:04 Uhr
8 Kommentare
Neuester Kommentar
Ich müsste also das ganze Array in eine Variable schreiben und in der zweiten Datei wieder auseinanderpfriemeln.
durch JOIN zum Beispiel:UebergabeVariable = Join(testarr, ";" )
das wäre eine Möglichkeit.
Gruss
Tsuki
Aber Vorsicht:
Die Kommandozeile mag keine Leerzeichen, bestimmte Sonderzeichen z.B. & machen auch Probleme.
Außerdem sollte das Trennzeichen nicht im Array vorkommen. Und die Kommandozeile hat eine bestimmte Begrenzung, wie lange die gesamte Kommandozeile werden darf.
Was spricht eigentlich gegen ein einziges Programm?
Die Kommandozeile mag keine Leerzeichen, bestimmte Sonderzeichen z.B. & machen auch Probleme.
Außerdem sollte das Trennzeichen nicht im Array vorkommen. Und die Kommandozeile hat eine bestimmte Begrenzung, wie lange die gesamte Kommandozeile werden darf.
Was spricht eigentlich gegen ein einziges Programm?
Direkt Timeout mitgeben nicht, aber mit ein bischen Programmierung kann man sowas ähnliches machen.
Allerdings kann man dann das Ergebnis nicht direkt einlesen, sondern muß es in eine Datei schreiben und später von dort einlesen:
Allerdings kann man dann das Ergebnis nicht direkt einlesen, sondern muß es in eine Datei schreiben und später von dort einlesen:
sBefehl = "cmd /c ""query user /server:meinserver"" > " & sTempFile
Set oExec = wshell.Exec(sBefehl)
' Zähler falls Programm abgebrochen werden muß, 200*100ms = 20 Sekunden Maximallaufzeit
i=0
While oExec.Status = WshRunning And i<200
WScript.Sleep 100
i=i+1
Wend
If oExec.Status = WshRunning Then
'Maximale Laufzeit überschritten
oExec.Terminate
' Fehlerbehandlung machen
End If
' Jetzt Datei sTempFile einlesen und Prüfen, falls nicht abgebrochen