http://dieseyer.de • all rights reserved • © 2011 v11.4

'*** 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

http://dieseyer.de • all rights reserved • © 2011 v11.4