Objshell.exec ohne öffnende Eingabeaufforderung
Hallo,
eine Frage zu vbs
Folgender Code:
Set objShell = CreateObject("WScript.Shell")
Set objExec = objShell.Exec("ping 192.168.2.1")
wscript.echo objExec.StdOut.readall
Funktioniert zwar, aber so lange der ping-Befehl läuft, öffnet sich eine Eingabeaufforderung. Geht das auch ohne?
Bisher hab ichs immer so gemacht:
objExec = objShell.run("%COMSPEC% /c ping 192.168.2.1",0,true)
Da öffnet sich zwar keine Eingabeaufforderung, aber in objExec steht nur der Errorcode des ping-Befehls.
Das heisst, ich muss die Ausgabe des pings in eine Datei umleiten und diese wieder auslesen. Geht, aber eleganter wärs mit der ersten Variante.
Nur halt ohne Eingabeaufforderung. Wie bekommt man die weg?
Danke
Martin
eine Frage zu vbs
Folgender Code:
Set objShell = CreateObject("WScript.Shell")
Set objExec = objShell.Exec("ping 192.168.2.1")
wscript.echo objExec.StdOut.readall
Funktioniert zwar, aber so lange der ping-Befehl läuft, öffnet sich eine Eingabeaufforderung. Geht das auch ohne?
Bisher hab ichs immer so gemacht:
objExec = objShell.run("%COMSPEC% /c ping 192.168.2.1",0,true)
Da öffnet sich zwar keine Eingabeaufforderung, aber in objExec steht nur der Errorcode des ping-Befehls.
Das heisst, ich muss die Ausgabe des pings in eine Datei umleiten und diese wieder auslesen. Geht, aber eleganter wärs mit der ersten Variante.
Nur halt ohne Eingabeaufforderung. Wie bekommt man die weg?
Danke
Martin
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 131267
Url: https://administrator.de/forum/objshell-exec-ohne-oeffnende-eingabeaufforderung-131267.html
Ausgedruckt am: 08.04.2025 um 23:04 Uhr
7 Kommentare
Neuester Kommentar
Hallo AlbertMinrich,
eine Möglichkeit:
Lege dir eine Batchdatei an in welche du folgende Zeile schreibst:
(natürlich den Pfad und Dateinamen anpassen!)
Dann erstellst du dir einen Link von deiner Batchdatei und mit rechter Maustaste klickst du auf selbigen und stellst unter Eigenschaften "Ausführen" --> "minimiert" ein.
Dann erscheint zwar immer noch das Ausgabefenster, allerdings in der Taskleiste und wird so erst mal nicht nervend sein.
Gruss
Tsuki
eine Möglichkeit:
Lege dir eine Batchdatei an in welche du folgende Zeile schreibst:
Wscript.Echo C:\MeinScript.vbs
Dann erstellst du dir einen Link von deiner Batchdatei und mit rechter Maustaste klickst du auf selbigen und stellst unter Eigenschaften "Ausführen" --> "minimiert" ein.
Dann erscheint zwar immer noch das Ausgabefenster, allerdings in der Taskleiste und wird so erst mal nicht nervend sein.
Gruss
Tsuki
oder so:
Dann aber die Adressen (in Zeile 1) festlegen und deine Aktionen in die IFs einfügen.
Gruss
Tsuki
strMachines = "192.168.0.1;192.168.0.2;192.168.0.3;192.168.0.4;192.168.0.5"
aMachines = split(strMachines, ";")
For Each machine in aMachines
Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}")._
ExecQuery("select * from Win32_PingStatus where address = '"_
& machine & "'")
For Each objStatus in objPing
If IsNull(objStatus.StatusCode) or objStatus.StatusCode<>0 Then
WScript.Echo("Computer " & machine & " is not reachable")
Else
WScript.Echo("Computer " & machine & " is reachable")
End If
Next
Next
Gruss
Tsuki
Na , dann haben wir eine kleine Situation.
Möglichkeit A
Ich bin nicht in der Lage, deine Frage zu verstehen
Möglichkeit B
Du bist nicht in der Lage, deine Gedanken in Worte zu fassen, in Form einer allgemein verständlichen Frage.
Da ich den Fehler aber erstmal immer bei mir suche, ziehe ich Möglichkeit A stark in betracht.
Ich lehne mich ganz entspannt zusammen mit dir zurück und wir folgen mal den nützlichen Tipps der vielen "Frage-Versteher". Dabei kann auch ich wieder etwas dazulernen.
In geduldiger Pose,
Tsuki
Möglichkeit A
Ich bin nicht in der Lage, deine Frage zu verstehen
Set objShell = CreateObject("WScript.Shell")
Set objExec = objShell.Exec("ping 192.168.2.1")
wscript.echo objExec.StdOut.readall
Set objExec = objShell.Exec("ping 192.168.2.1")
wscript.echo objExec.StdOut.readall
Funktioniert zwar, aber so lange der ping-Befehl läuft, öffnet sich eine Eingabeaufforderung. Geht das auch ohne?
Möglichkeit B
Du bist nicht in der Lage, deine Gedanken in Worte zu fassen, in Form einer allgemein verständlichen Frage.
Da ich den Fehler aber erstmal immer bei mir suche, ziehe ich Möglichkeit A stark in betracht.
Ich lehne mich ganz entspannt zusammen mit dir zurück und wir folgen mal den nützlichen Tipps der vielen "Frage-Versteher". Dabei kann auch ich wieder etwas dazulernen.
aber das ist eine Lösung nur fürs pingen. Es geht mir aber generell um die Ausführung von Dos-Befehlen (dir, tasklist...)
Lernen wir heute mal, wie VBS und DOS zusammenarbeiten.In geduldiger Pose,
Tsuki