SQLの窓

2014年03月14日

VBScript : 手軽にタスクスケジューラ時間差実行

サービスで、Task Scheduler が実行されている事が前提です。自分は普段止めているので、スクリプトからサービスを開始する処理を付け加える必要がありますが、通常なら問題無いでしょう。

分単位で連続して起動するパラメータも設定可能ですが、それなら GUI で登録するほうが確実です。これは、1時間後とか5分後とかそういう目的に使用します。( 一回限りの実行 )

Windows7 でテストしていますが、対話を必要とするようなアプリケーションはセキュリティ理由と思われますが、かつて可能であった InteractWithDesktop フラグが動作しませんでした。しかし純粋なバッチ処理では動作を確認しています。
' 管理者として実行を強制する
Set obj = Wscript.CreateObject("Shell.Application")
if Wscript.Arguments.Count = 0 then
	obj.ShellExecute "wscript.exe", WScript.ScriptFullName & " runas", "", "runas", 1
	Wscript.Quit
end if

ServiceString = "winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2"
Set objWMIService = GetObject( ServiceString )
Set objScheduledJob = objWMIService.Get( "Win32_ScheduledJob" )

Set colEvents = objWMIService.ExecQuery _ 
	("Select * from Win32_TimeZone" )
For Each obj In colEvents
	Utc = obj.Bias
	Exit For
Next

Set objDate = CreateObject("WbemScripting.SWbemDateTime") 
' 一分後
dtTargetDate = Now() + Cdate("0:01:00")
objDate.SetVarDate dtTargetDate, False
objDate.UTC = Utc
'Wscript.Echo objDate

Dim ret,JobId

ret = objScheduledJob.Create( "cscript.exe C:\user\lightbox\vbs\wk001\test.vbs", _
	objDate & "",,,,,JobId )

'Wscript.Echo ret
'Wscript.Echo JobId

'0 要求はが受け付けられました
'1 この要求はサポートされていません
'2 ユーザーは、必要なアクセス権限がありません
'8 Interactive process.
'9 The directory path to the service executable file cannot be found.
'21 無効なパラメータです
'22 アカウントにサービスにアクセスする権限がありません


▼ 動作を確認したスクリプト
Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.LogEvent 0, "ログ出力"

Set Fso = CreateObject( "Scripting.FileSystemObject" )
strCurPath = WScript.ScriptFullName
Set obj = Fso.GetFile( strCurPath )
Set obj = obj.ParentFolder
strCurPath = obj.Path

Set OutObj = Fso.OpenTextFile( strCurPath & "\バッチ.txt", 2, True )
OutObj.WriteLine "あいうえお"
OutObj.Close

実行後の確認は、コマンドプロンプトを管理者権限で実行して、at を実行すると登録された JOB が表示されます。何らかの理由で、実行に失敗するとタスク実行予定に残ったままになるので、 at JOB番号 /delete で削除します。


【VBScriptの最新記事】
posted by at 2014-03-14 01:32 | VBScript | このブログの読者になる | 更新情報をチェックする


Android SDK ポケットリファレンス
改訂版 Webデザイナーのための jQuery入門
今すぐ使えるかんたん ホームページ HTML&CSS入門
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX