'*** v9.7 *** www.dieseyer.de ******************************* ' ' Datei: wait.vbs ' Autor: dieseyer@gmx.de ' Auf: www.dieseyer.de ' ' Skript sollte in einem über PATH erreichbaren Verzeichnis ' liegen (z.B. c:\windows\system32\) und kann dann in einer ' .bat bzw. .cmd-Datei aufgerufen werden: ' wait.vbs 10 ' läßt die Abarbeitung (etwa) 10 Sekunden ruhen. ' Wird kein Parameter übergeben oder ist dieser kleiner als, ' 0,1 oder 0.1. wird das Skript für 1/10 Sek. angehalten. ' Nachkommastellen weren entfernt (Ausser bei 0.1). ' ' Werden mehr als ein Parameter übergeben, wird versucht, ' diese nach Ablauf der Zeit per WSHShell.Run zu starten. ' "wait.vbs 99 taskmgr.exe" startet nach 99s den Taskmanager ' ' .lnk-Dateien lassen sich nicht starten. ' Parameter können an zu startende Programme nicht ' übergeben werden. ' '*********************************************************** Option Explicit Dim Progr, Zeit, i, oArgs set oArgs = Wscript.Arguments ' hole alle Argumente ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ For i = 0 to oArgs.Count - 1 ' hole alle Argumente If i = 0 Then Zeit = oArgs.item(i) If i = 1 Then Progr = Progr & oArgs.item(i) If i > 1 Then Progr = Progr & " " & oArgs.item(i) Next If InStr( Zeit, "." ) Then Zeit = Left( Zeit, InStr( Zeit, "." ) -1 ) If InStr( Zeit, "," ) Then Zeit = Left( Zeit, InStr( Zeit, "," ) -1 ) ' Nachkomma- / Nachpunkt-Stellen entfernen ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ On Error Resume Next ' keine Unterbrechung bei Fehler If Zeit < 0.1 Then Zeit = 0.1 Zeit = Zeit / 10*10 ' das ist so etwas ähnliches wie eine Typ-Wandlung If Zeit > 60*60*24*7 Then Zeit = 60*60*24*7 ' 60*60*24*7 ist eine Woche On Error GoTo 0 ' ermittelte Zeit warten ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ WScript.Sleep Zeit*1000 ' statt Millisekunden ' MsgBox """" & Progr & """" & vbCRLF & Zeit & " Sekunde(n) sind um.", , WScript.ScriptName ' Wurde kein zu startendes Programm (als Parameter) übergeben ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ If Progr = "" Then WScript.Quit ' prüfen, ob erhaltener Parameter als Datei gefunden wird ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ If CreateObject("Scripting.FileSystemObject").FileExists( Progr ) Then Progr = Trim( Progr ) ' Leerzeichen am Anfang und am Ende entfernen Progr = """" & Progr & """" ' Progr = inputBox( "'" & Progr & "'", , Progr ) WScript.CreateObject("WScript.Shell").Run Progr Else MsgBox vbTab & "! ! ! F E H L E R ! ! !" & vbCRLF & vbCRLF & "Folgendes Programm soll gestartet werden, existiert aber nicht:" & vbCRLF & vbCRLF & Progr, vbCritical + 4096, "71 :: " & WScript.ScriptName End If ' MsgBox "! ! ! E N D E ! ! !", vbInformation + 4096, "74 :: " & WScript.ScriptName WScript.Quit