Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Objshell.exec ohne öffnende Eingabeaufforderung

Frage Entwicklung VB for Applications

Mitglied: AlbertMinrich

AlbertMinrich (Level 2) - Jetzt verbinden

08.12.2009 um 23:58 Uhr, 7342 Aufrufe, 7 Kommentare

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
Mitglied: TsukiSan
09.12.2009 um 07:24 Uhr
Hallo AlbertMinrich,

eine Möglichkeit:
Lege dir eine Batchdatei an in welche du folgende Zeile schreibst:
01.
Wscript.Echo C:\MeinScript.vbs
(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
Bitte warten ..
Mitglied: TsukiSan
09.12.2009 um 07:33 Uhr
oder so:
01.
strMachines = "192.168.0.1;192.168.0.2;192.168.0.3;192.168.0.4;192.168.0.5" 
02.
aMachines = split(strMachines, ";") 
03.
  
04.
For Each machine in aMachines 
05.
    Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}")._ 
06.
        ExecQuery("select * from Win32_PingStatus where address = '"_ 
07.
            & machine & "'") 
08.
    For Each objStatus in objPing 
09.
        If IsNull(objStatus.StatusCode) or objStatus.StatusCode<>0 Then  
10.
            WScript.Echo("Computer " & machine & " is not reachable")  
11.
        Else 
12.
	    WScript.Echo("Computer " & machine & " is reachable") 
13.
        End If 
14.
    Next 
15.
Next
Dann aber die Adressen (in Zeile 1) festlegen und deine Aktionen in die IFs einfügen.

Gruss
Tsuki
Bitte warten ..
Mitglied: AlbertMinrich
09.12.2009 um 11:17 Uhr
@TsukiSan
es soll schon komplett ohne Fenster laufen, auch nicht minimiert.
es geht mir auch nicht ums pingen, sondern allgemein um die Ausführung von Dos-Befehlen.
Bitte warten ..
Mitglied: TsukiSan
09.12.2009 um 14:38 Uhr
Na Tipp Nr.2 läuft ganz ohne Fenster.
Jetzt verstehe ich deine Frage nicht??
Bitte warten ..
Mitglied: AlbertMinrich
09.12.2009 um 16:47 Uhr
aber das ist eine Lösung nur fürs pingen. Es geht mir aber generell um die Ausführung von Dos-Befehlen (dir, tasklist...)
Bitte warten ..
Mitglied: TsukiSan
10.12.2009 um 02:41 Uhr
Na , dann haben wir eine kleine Situation.

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

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
Bitte warten ..
Mitglied: AlbertMinrich
10.12.2009 um 11:33 Uhr
Das hier:
Set objShell = CreateObject("WScript.Shell")
Set objExec = objShell.Exec("ping 192.168.2.1")
wscript.echo objExec.StdOut.readall

war nur ein Beispiel.
Das funktioniert mit deiner Lösung einwandfrei.
Ich will aber nicht nur pingen, sondern vielleicht auch mal das hier machen:
Set objExec = objShell.Exec("dir c:\")
Dafür ist aber deine Lösung nicht geeignet, oder seh ich das falsch?

Ich weiss nicht, was du mir damit sagen willst:
"Lernen wir heute mal, wie VBS und DOS zusammenarbeiten"

Ich weiss, wie man aus einer batch ein vb-Script startet und auch andersrum.
Ersteres will ich nicht. Das Hauptscript muss ein vb-Script sein. Daraus will ich beliebige DOS-Befehle ausführen, ohne dass sich eine Eingabeaufforderung öffnet und ohne Umleitung des DOS-Befehls in eine Datei, die ich dann erst wieder auslesen müsste.

Vielleicht kommen wir ja noch zusammen ;)
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...