Script für Programmstart bei bestehender Internetverbindung

Executor55

Lt. Commander
Registriert
Okt. 2004
Beiträge
1.699
Hi
Ich möchte mit einem Script erreichen, das sobald eine Internetverbindung besteht es einige Anwendungen startet.
Das ganze habe ich mit einem Batch-Script folgendermaßen realisiert:
Code:
@echo off
set host=www.google.de
:start
ping -n 1 %host% | find /i "Antwort" && (goto progs) || (goto start)
:progs
notepad.exe
exit
Das ganze funktioniert auch soweit.
Jetzt möchte ich allerdings, dass das schwarze Consolenfenster versteckt ausgeführt wird, da es etwas stört wenn es offen ist, solange ich noch kein Internet habe (gehe mit UMTS online).

Soweit ich das jetzt verstanden habe gibt es keine Möglichkeit ein dos-Fenster mit Windows (mit dos-Befehl) zu verstecken, mit einem VB-Script aber schon.

Wäre jetzt jemand so nett mir mein Batch-Script in ein VB-Script mit "hide" umzuschreiben?, da ich von VB-Scripten keine Ahnung habe.

Bin natürlich für Alternativen oder effizientere Lösungen aller Art nicht abgeneigt, es sollte nur ein Script/Programm sein, das:
- unabhängig vom Pfad in dem es ausgeführt wird funktioniert!!
- nicht sichbar ausgeführt wird
- ohne zusätzliche Programme und installationen funktioniert (unter Vista sowie XP, 64bit !!)
- Programme die ausgeführt werden, sollen veränderbar sein

Danke für Antworten
 
In der Verknüpfung unter "Ausführen: Minimiert" reicht nicht?
 
Welche Verknüpfung? vom Script oder von den Programmen?
 
Geht das auch mit dem Script selber, also der .bat oder geht das explizit nur bei Verknüpfungen?
Und schöner wäre es trozdem ganz versteckt.
 
Mit dem Script selbst geht das nicht, da dazu die cmd.exe geöffnet werden muss.
 
@Backslash
executor55 schrieb:
Wäre jetzt jemand so nett mir mein Batch-Script in ein VB-Script mit "hide" umzuschreiben?, da ich von VB-Scripten keine Ahnung habe.
;)
 
In etwa so..
Code:
on error resume next
Set shell = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")

adr = "google.de"
prog = "notepad.exe"

ret=shell.Run("%comspec% /c ping.exe -n 1 -w 500 -a " & adr & ">C:\ping.txt",0)
wscript.sleep 2000
set datei = fso.opentextfile("C:\ping.txt")
inhalt = datei.readall
datei.close

if instr(inhalt,"TTL")>0 then
shell.run(prog)
else
msgbox "keine verbindung"
end if
 
Backslash schrieb:
Man kann doch das ganze als VBS schreiben und sich die bat sparen?!

Klar kann man das, wenn einem völlig egal ist, dass Scripte mit vbs ein Sicherheitsrisiko darstellen, besonders dann, wenn man sie versteckt ausführen lässt. :rolleyes:
 
Danke für die Antwort und das Script ist schon mal nicht schlecht, aber ...
das vbs-Script funktioniert teilweise hat aber noch fehler:

1. Mit notepad.exe und/oder calc.exe geht das wie gewünscht. Hab ich jetzt allerdings einen Pfad mit Leerzeichen ("E:\Programme und Daten\cpu-z.exe" zb.) findet er den Pfad nicht und führt die .exe einfach nicht aus. Wie kann ich jetzt also auch Pfade angeben die ein oder mehrere Leerzeichen beinhalten?

2. Wenn ich einen Programmpfad angebe den es nicht gibt, kommt immer die Fehlermeldung "Keine Verbindung" ... Warum?

3. Das Script erfüllt so nocht nicht ganz den Anforderungen ^^
Wenn ich den Computer starte und noch kein Internet da ist, soll er keine Fehlermeldung ausgeben, sondern in einer schleife solange versuchen zu pingen bis er ne Antwort bekommt. Und wenn ich an den Rechner gehe und 5h lang nicht im Internet bin, naja dann läuft das Programm halt 5h lang im Hintergrund. Da vielleicht einbaun, das er nur alle 10 sek prüft ob die Internetverbindung besteht.

4. Noch einbauen, das am ende des Scripts die Datei ping.txt wieder gelöscht wird, wäre super.

Ich weis ich nörgel noch wegen vieler Kleinigkeiten rum aber wäre echt super nett wenn du das nochmal überarbeiten könntest

Danke


//EDIT
Habe mich jetzt ein bisschen selbst schlau gemacht mit vbs und mir dein script selber so umgeschrieben wie von mir gewünscht.
Sieht jetzt so aus und funktioniert:


Code:
on error resume next
Set shell = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")

adr = "www.google.de"
prog1 = "calc.exe"
prog2 = """C:\Dokumente und Einstellungen\benutzer01\Eigene Dateien\Portable Firefox 3.0.1\MultipleFirefoxLoader.exe"""

do until instr(inhalt, "TTL")>0
ret=shell.Run("%comspec% /c ping.exe -n 1 -w 500 -a " & adr & ">C:\ping.txt",0)
wscript.sleep 5000
set datei = fso.opentextfile("C:\ping.txt")
inhalt = datei.readall
datei.close
loop

fso.DeleteFile("c:\ping.txt")

shell.run(prog1)
shell.run(prog2)


//EDIT 2:
Hab trotz das es geht versucht, das script abzuspecken. Das ganze sieht jetzt ungefähr so aus:

Code:
on error resume next
Set shell = CreateObject("WScript.Shell")

do until instr(inhalt, "TTL")>0
inhalt=shell.Run("%comspec% /c ping.exe -n 1 -w 500 -a " & "127.0.0.1",0)
wscript.sleep 5000
loop

shell.run("calc.exe")
Das einzige Problem das es da gibt, ist das er den ping nicht in die variable speichert.
Stell mir das so einfach vor ... ist es aber nicht :D
 
Zuletzt bearbeitet:
Zurück
Oben