Autostart verzögern

Kennen Sie das? Nach dem Booten des Rechners starten verschiedene Programme, aber ein Programm bleibt hin und wieder hängen, entweder weil es bei seinem frühen Start irgendeine Datei nicht findet oder weil es von dem gleichzeitig startenden Anti-Virusprogramm kurzzeitig blockiert wird.

Hilfreich wäre eine Verzögerung des Programmstarts. Aber wie macht man das am einfachsten?

Ich möchte Ihnen hier eine Batchdatei vorstellen, die genau das macht. Der Knackpunkt: es gibt standardmäßig für Batchdateien keinen „sleep“-Befehl, der den Ablauf der Batchbefehle um eine bestimmte Zeit verzögert.
Für dieses Problem gibt es zwei Lösungsmöglichkeiten:

  1. in den frei zugänglichen Windows Server 2003 Resource Kit Tools gibt es für diesen Zweck die Datei „sleep.exe“. Kopieren Sie diese in den System32-Ordner des Windows-Ordners. Danach steht der Befehl „sleep“ mit folgender Syntax zur Verfügung:
    sleep 5 wartet 5 Sekunden.
    Wenn Sie sleep.exe in einem anderen Ordner abgelegt haben, müssen Sie ggf. den Pfad angeben.
  2. Wer keine fremde bzw. zusätzliche Datei installieren möchte, kann stattdessen folgende Zeile verwenden:
    ping /n 6 localhost >nul wartet ca. 5 Sekunden. Der Befehl bewirkt, dass sich der Rechner selbst pingt – schadet ihm nicht.
Beispiel-Quellcode für AUTOSTART.CMD
@echo off & setlocal
set titel=Autostart
title %titel%
echo PCA-Server und Heidelberg License Manger werden um 3 s verz"gert gestartet.
sleep 3
start /b C:\\Programme\\PcaServer\\pcaserv.exe
if exist E:\\nul
REM Das Programm prüft ob das Laufwerk E vorhanden ist
goto heidelberg
REM Bei Vorhandensein wird zu "heidelberg" gesprungen
echo.
echo USB-Platte (LW E:) nicht gefunden! Das Programm wird beendet.
sleep 3
goto beenden

:heidelberg
start /b C:\\HEYEX\\Helic.exe

:beenden

Im konkreten Fall befinden sich die HRT-Daten auf einer USB-Platte. Daher wird vor dem Starten des Licence Managers (Helic.exe) abgefragt, ob die Platte an den Rechner angeschlossen ist.
Anmerkung: Ping überprüft Konnektivität mit einem anderen TCP/IP-Computer auf IP-Ebene durch Senden von ICMP-Echoanforderungen (Internet Control Message-Protokoll). Der Empfang entsprechender Echoantworten wird zusammen mit Zeitangaben angezeigt. „> nul“ bewirkt, dass keine Meldung ausgegeben wird.

Download: sleep.exe

Nachtrag: mittlerweile habe ich ein kleines Programm erstellt, das auf komfortable Weise beliebig viele Programme mit Verzögerung startet. Die Verzögerung lässt sich als Startparameter eingeben. Die zu startenden Programme müssen mit Hilfe eines Editors (z.B. Notepad) in die Konfigurationsdatei eingetragen werden. Diese wird automatisch beim ersten Programmstart erstellt und enthält weitere Hinweise.

Download: RunDelay.exe