Autostartprogramm verzögern

nassa

Lt. Junior Grade
Registriert
Jan. 2008
Beiträge
453
Hallo,

ich möchte gerne, dass sich eine .bat Datei, welche ich erstellt habe, nicht sofort nach dem Start ausführt, sondern erst so nach 10 Sekunden.


Habe diese kleine Problem, dass er nachdem er hochgefahren ist, erstmal das Internet 3-5 Sekunden initialisieren muss (über Hochschulnetzwerk). Dadurch steht meine .bat Datei die ganze Zeit in der Warteschlange und man sieht die ganze Zeit das Fenster der Eingabeaufforderung. Erst wenn die Verbindung steht, wird die Datei ausgeführt.


Wie kann ich das jetzt machen, dass die Datei erst so nach 10 Sekunden, also wenn die Verbindung steht, ausgeführt wird?


Gibt es da einen Anhang den ich noch hinzufügen muss?
 
Das bringt doch nix. Damit ist die Command Box doch immernoch offen sichtbar und stört. Ob die Box nun offen ist weil die Befehle erst nach 10 Sekunden laufen, oder ob in den 10 Sekunden nen ping gemacht wird ist doch egal.


Den Start der Batch zu verzögern wird schwierig. Die Windows Autostart Methoden eignen sich dazu nicht, da es keine Zeitsteuerung gibt.

Als Lösung könntest du die Batch minimiert starten, dann ist sie immerhin nur unten in der Taskleiste sichtbar. Evtl. musst du dazu einen Link auf die Batch legen, damit du dauerhaft sagen kannst, nur minimiert zu starten.

Besser aber auch ein wenig aufwändiger wäre es, die Batch Datei als Service in die Dienste Konsole einzutragen. Dann würd sie zwar auch sofort beim PC-Start ausgeführt, aber in einer nicht interaktiven Sitzung, standardmäßig im Systemkontext. So würdest du wirklich gar nix mehr sehen. Das Problem dabei: Du kannst Batch Dateien nicht direkt in die Dienste Konsole eintragen, da dort nur Programme möglich sind, die auf die MMC Steuerbefehle reagieren. Du bräuchtest also einen Wrapper, der die Steuerbefehle entgegennimmt und dadurch weiß wann er deine Batch Datei zu starten hat. Ich denk da an Programme wie srvany.exe
 
Unter Win7 kannst du das mit der Windows Aufgabenplanung machen.

Systemsteuerung -> Aufgaben planen -> eine neue Aufgabe erstellen -> Aufgabe starten: bei Anmeldung -> Verzögerung: 10 Sekunden
 
easy.2ci schrieb:
Das bringt doch nix. Damit ist die Command Box doch immernoch offen sichtbar und stört. Ob die Box nun offen ist weil die Befehle erst nach 10 Sekunden laufen, oder ob in den 10 Sekunden nen ping gemacht wird ist doch egal.
versteh ich ehrlich gesagt nich...
nassa schrieb:
Wie kann ich das jetzt machen, dass die Datei erst so nach 10 Sekunden, also wenn die Verbindung steht, ausgeführt wird?
2 fliegen mit einer klappe geschlagen. man kann überprüfen ob die verbindung besteht, sowie verzögert starten. zumal kann man danach die eigentlich zu öffnende anwendung via start starten. und wozu mit diensten rumhandtieren und unnötigen aufwand betreiben, wenn es doch so einfach geht. und wie du geschrieben hast, kann man die batch auch minimiert starten.
 
claW. schrieb:
versteh ich ehrlich gesagt nich...
Er will das sich das Fenster erst öffnet wenn Internet da ist. Wenn man aber vorher erst 10 Sekunden lang rumpingt, ist das Fenster ja trotzdem offen.

2 fliegen mit einer klappe geschlagen. man kann überprüfen ob die verbindung besteht, sowie verzögert starten. zumal kann man danach die eigentlich zu öffnende anwendung via start starten. und wozu mit diensten rumhandtieren und unnötigen aufwand betreiben, wenn es doch so einfach geht. und wie du geschrieben hast, kann man die batch auch minimiert starten.
Wie schon gesagt, kann man mit der Aufgabenplanung nach ziemlich vielen kriterien den Autostart einstellen. Unter Anderem geht auch eine Verzögerung.
 
locomarco schrieb:
Er will das sich das Fenster erst öffnet wenn Internet da ist. Wenn man aber vorher erst 10 Sekunden lang rumpingt, ist das Fenster ja trotzdem offen.

genau so möchte ich das.


Ich werde das mal mit dem Startplaner probieren. Ich schreib obs geklappt hat.
 
einfacher ist das Ganze, wenn man gleich VBS oder eine andere Scriptsprache benutzt, und das alles per Do-While Schleife macht.
 
ja, kann ich aber nicht.

das einzige wo ich ne Do-While Schleife hinbekomme is C++. ^^ sry bin kein Informatiker.
 
vllt. wäre es einfacher, wenn du mal die Batch postest.
 
es geht doch gar nicht um die Batch. Deren Inhalt ist doch völlig egal.

Es geht nicht darum innerhalb der Batch 10 Sekunden zu warten, sondern den Start 10 Sekunden zu verzögern.

Wenn du Windows7 hast, sieht der Vorschlag von firesnow doch ganz passabel aus.

Ansonsten kannst du den Start wie ich oben beschrieben hab in eine nicht interaktive Session verschieben, dann siehst du gar nichts mehr und dann ist es ja egal, ob die Batch sofort oder erst später gestartet wird. Du siehst ja eh nix.
 
@ easy.2ci:

das Problem ist, dass ich die batch basierend auf den Rivatuner ausführen muss.

sprich die batch ist eigentlich nur eine Rivatuner-Anwendung.

Meine Batch sieht ungefähr so aus:

..../Programme/Rivatuner/rivatuner.exe -s -v -x -3 -5 -6

das "-s -v -x -3 -5 -6" hab ich jetzt einfach mal nur als Beispiel hingeschrieben. Da steht was anderes (längeres).


Daher, kann die Batch leider nicht als Dienst ausgeführt werden, da die Dienste ja schon vor der Anmeldung laden.

Meine Batch muss also auf Rivatuner warten, bis dieses im Tray geladen ist. Und dieser Rivatuner läd bei mir erst nachdem sich die Internetverbindung initialisiert hat.
 
hab mal n kleines tool geschrieben, mit dem du auf eine anwendung warten kannst. du musst dafür allerdings nur rivatuner öffnen und die im archiv enthaltene spyxx.exe (wird mit visual studio mitgeliefert). dort gehst du dann in die toolbar und suchst dir das im screenshot eins umrandete icon raus, mit welchem du fenster suchen kannst. klickst anschließend auf spy++ ausblenden und erhälst dann die ansicht vom zweiten screenshot. das fadenkreuz daneben ziehst du dann auf rivatuner (am besten immer auf die titelleiste, so wie im screenshot angezeigt). dann erhälst du in den unteren beiden feldern den klassen-, sowie fensternamen. hier nimmst du am besten den wert, welcher mehr aussagt (wie im screenshot zu sehen eignet sich die beschriftung bei cpu-z eher, anstatt des klassennamens). den besseren wert trägst du nun also in der batch als parameter des tools ein. der erste beschreibt dabei den klassennamen des tools, der zweite den fensternamen. angegeben werden kann beides, eins allerdings immer. danach siehst du wie das tool sucht und wenn die anwendung gefunden wurde, wird es ausgegeben (du kannst auch auf den rückgabewert prüfen: fenster gefunden gibt 0 zurück, bei einem fehler 1 [kein parameter angegeben] oder 2 [parameter fehlt]).

achte aber auf leerzeichen. bei cpu-z ist z.b. hinter dem z noch ein leerzeichen versteckt. das müsstest du also mit angeben. bei fenstern mit leerzeichen musst du den parameter natürlich in anführungszeichen setzen, aber ich denke das weißt du.

edit: bilder wurden vertauscht. das rechte ist schritt eins, das linke schritt zwei.
 
Zuletzt bearbeitet:
wenn ich auf dein spyxx.exe klicke kommt folgende meldung:
 

Anhänge

  • spy.JPG
    spy.JPG
    35,4 KB · Aufrufe: 371
wenn das so is, dann versuch einfach mal den fensternamen so einzutragen. heißt, dass du auf das rivatuner fenster wartest und den titel davon als parameter einträgst. z.b.:
Code:
WaitForApp 0 RivaTuner
 
ne, ich kann die spyxx.exe gar nicht erst starten. also ich kann in das Feld "Fenstersuche" auch nichts eintragen.

oder meinst du, dass ich das in der .cpp File ändern soll?
 
ne ich meinte damit, dass du das einfach in die batch datei zum warten einträgst. ggf. reicht das ja schon aus (insofern keine leerzeichen o.ä. wie in cpu-z auftauchen).

hast du denn sonst alle runtime libraries drauf? hier nummer eins und nummer zwei.
 
@claW

ich muss mich für deine Bemühungen bedanken, aber ich hab eine viel einfache Lösung gefunden. Ich frag mich wie blöd man manchmal sein muss. Wie einfach es doch auch sein kann.

Mir ist gerade eingefallen, dass ich doch auch einfach eine Verknüpfung meiner batch erstellen kann und bei dieser dann "minimiert" starten unter den Eigenschaften einstellen kann. Dadurch wartet meine Batch zwar immer noch auf rivatuner aber halt minimiert und da stört es mich nicht so sehr.

trotzdem danke nochmal für deine Hilfe



edit:

zudem habe ich gerade noch herausgefunden, dass man das auch über rivatuner einstellen kann. dort gibt es den Bereich Task sheduler. Dort kann man angeben was und wann Rivatuner eine Anwendung starten soll. Da habe ich einfach die batch datei gewählt und unter Startoptionen "wenn rivatuner startet" gewählt. als datei habe ich natürlich noch schön die verknüpfung gewählt. jetzt ist es perfekt.
Die batch Datei startet erst nachdem Rivatuner gestartet ist und dann auch noch schön minimiert für weniger als einen Bruchteil einer Sekunde.
 
Zuletzt bearbeitet:
Zurück
Oben