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
Please also mark the comments that contributed to the solution of the article
Content-Key: 170417
Url: https://administrator.de/contentid/170417
Printed on: May 4, 2024 at 09:05 o'clock
8 Comments
Latest comment
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