HowTo: Batch Ausführung nach Hibernate des Windows-Rechners

Wenn es notwendig ist bestimte Batchbefehle wie das Verbinden von Netzlaufwerken via "NET USE" nach einem Neustart, Supend-to-Disk oder Suspend-to-RAM ausführen zu lassen, wird man von Widows allein gelassen.
Um dennoch eine Batchausführung nach dem Wiederanschalten des Rechners aus dem Ruhezustand zu erreichen, hilft das hier beschriebene VB-Skript, welches sowohl Windows XP als auch Windows 7 ausführen kann.
Dieses Skript kann man in den Autostartbereich eintragen (unter Start / Alle Programme / Autostart oder StartUp).
Im Skript muss der Pfad zur eigentlichen Batchdatei ("c:\my_batch.bat" in Zeile 5 + 12) eingetragen werden, die dann die Batch-Befehle enthält.
Der Dateiname dieses Skriptes muss auf ".vbs" enden, damit Windows es als VB-Skript erkennt und ausführen kann.

Vorgehensweise des Skriptes

Beim ersten Aufruf des Skripts wird das Batchfile in jedem Fall ausgeführt. Danach ermittelt das Skript den aktuellen Zeitpunkt und bewahrt diesen auf. Nach 10 Sekunden erwacht das Skript erneut zum Leben und prüft, ob der nun aktuelle Zeitpunkt wesentlich fortgeschritten ist, also während der Ruhezeit mehr als 10 Sekunden vergangen sind. Wenn dies der Fall war, liegt ein Aufwahen aus dem Hibernate Zustand vor und das Batchskript wird erneut gestartet.

VB-Skript für Batchstart nach Hibernate:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
dim P1, P2, T1, T2, X0, X1, X2
X2=7855

Set WshShell = WScript.CreateObject("WScript.Shell")
P1 = "c:\my_batch.bat"
P2 = 1
WshShell.Run P1, P2

do while 1 > 0
  if X2 < 7855 then
    Set WshShell = WScript.CreateObject("WScript.Shell")
    P1 = "c:\my_batch.bat"
    P2 = 1
    WScript.Sleep 30000
    WshShell.Run P1, P2
  end if
  
  T1 = time
  WScript.Sleep 10000
  T2 = time
  
  X0 = T2-T1
  X1 = CDate(X0)
  X2 = CLng(1/X0)
  
  if X2 < 1 then
    X2 = 8640
  end if
loop