$ = Scheduleit("notepad.exe",,,,,,"Y")
? "PRESS A KEY TO EXIT"
get $ ;pause
Function SCHEDULEIT($JOB, Optional $DateX, Optional $TIMEX, Optional $Days, Optional $DOM, Optional $Comp, Optional $I)
; Syntax: ref -
; http://msdn2.microsoft.com/en-us/library/aa389389.aspx
; http://msdn2.microsoft.com/en-us/library/aa394399.aspx
; $Job = Command line string of job to run
; $DateX = YYYYMMDD defaults to Today
; $TimeX = HHMMSS defaults to next minute
; $Days = "MO,TU,WE,TH,FR,SA,SU" Select 1 or more separated by a comma. Optional !
; $DOM = String Number 1 to 31 apropriate for day of month. Optional !
; $Comp = Computername or TCP.IPA.DDR.ESS Nul defaults to the computer running the script.
; $I = Interact With Desktop. 'TRUE' If NOT Blank, use a Y or similar. Default = FALSE
;debug on
If $Job = ""
Exit 0
Endif
Dim $X, $DayX, $DayN, $DM, $RR, $JOBID,$JOBX,$UTCO,$Service,$NewJob,$JobCreated
If $I <> ""
$I = " TRUE "
Endif
If $DateX = ""
$DateX = "********"
Endif
If $TimeX = "" or len($TimeX) <> 6
$TimeX = left(@time,2)+right("0"+cstr(val(substr(@time,4,2))+1),2)+"00"
Endif
If $Comp = ""
$Comp = "."
Endif
If left($Comp,2) = "\\"
$Comp = right($Comp,-2)
Endif
If $Days <> ""
$DayX=SPLIT($Days,',')
For $X = 0 to Ubound($DayX)
Select
Case left($DayX[$x],2) = "MO"
$DayN = $DayN + '1 OR '
Case left($DayX[$x],2) = "TU"
$DayN = $DayN + '2 OR '
Case left($DayX[$x],2) = "WE"
$DayN = $DayN + '4 OR '
Case left($DayX[$x],2) = "TH"
$DayN = $DayN + '8 OR '
Case left($DayX[$x],2) = "FR"
$DayN = $DayN + '16 OR '
Case left($DayX[$x],2) = "SA"
$DayN = $DayN + '32 OR '
Case left($DayX[$x],2) = "SU"
$DayN = $DayN + '64 OR '
EndSelect
Next
If $DayN <>""
$DayN = left($DayN,-4) ; Strip off trailing OR
Endif
If len($DayN) > 2 ;RunRepeatedly = 'True' for multiple days
$RR = ' TRUE '
Endif
Endif
If val($DOM)>0
$DM=1
For $X = 2 to val($DOM)
$DM=$DM+$DM
Next
If $DayN <>""
$DayN = ""
EndIf
$RR = ' TRUE '
Endif
$WMIService = GetObject("winmgmts:\\" + $Comp + "\root\cimv2")
; http://msdn2.microsoft.com/en-us/library/aa394498.aspx
$colItems = $WMIService.ExecQuery("Select * from Win32_TimeZone",,48)
For each $objItem in $colItems
$X = val($objItem.Bias)
Select
CASE $X = 0
$Bias = '-000'
CASE $X < 0
$BIAS = '-' + right('00' + cstr(-1 * $X),3)
CASE $X > 0
$BIAS = '+' + right('00' + cstr($X),3)
EndSelect
Next
; http://msdn2.microsoft.com/en-us/library/aa389389.aspx
$NewJob = $WMIService.Get("Win32_ScheduledJob")
$JobX = '"'+$Job+'" , "'+$DateX+$TimeX+'.000000'+$BIAS+'",'+$RR+','+$DayN+','+cstr($DM)+','+$i+', JobId'
$JobCreated = $NewJob.Create($JobX)
If $JobCreated = 0
$colItems = $WMIService.ExecQuery("Select * from Win32_ScheduledJob",,48)
For each $objItem in $colItems
? "New Job ID: " + $objItem.JobId
next
Else
? "An error occurred: " + @serror
EndIf
EndFunction