タスクスケジューラーもどきを作ってみた
タスクスケジューラーもどきスクリプトのお裾分けです。
それなりに採り入れやすいシンプルさで、充分実用的に仕上がってます。
「こうすればよりスマートだよ」があれば教えてください。
派生案とか便乗もウェルカムです。
機能
- 指定時間に指定アクションを実行
きっかけのスレッド
https://winactor.com/questions/?q=New!%20WinActroのロゴが表示されたところで止まり、起動しない
オススメのユーザー像
- タスクスケジューラーが制限されている
- タスクスケジューラーがじゃじゃ馬で乗りこなせない
- タスクスケジューラーからRPAを実行させている
タスクスケジューラーもどきのスクリプト
' 時間指定
myTime1 = "15:00"
myTime2 = "15:01"' 1つめの時間に
Do While CDate(myTime1) > Time
Loop
MsgBox myTime1 ' 1つめのアクションを実行(目的のアクションに差し替える)
MsgBox myTime1 ' 2つめのアクション' 2つ目の時間
Do While CDate(myTime2) > Time
Loop
MsgBox myTime2
スクリプト実行方法のバリエーション
- メモ帳に貼り付けて、たすくすけじゅーらー.vbs として保存
- VBSをダブルクリック
- VBSをスタートアップに登録しておく
https://www.google.com/search?q=Windows10+スタートアップ
リファレンス
アクション部分のスクリプト例
【VBS】WshShell.Runによる外部プログラムの実行のバリエーションと注意事項 : GINPRO / SQLの窓と銀プログラマ
https://ginpro.winofsql.jp/article/267579611.html
作成後記
- ▲ 1指定時間のアクションにつきミニマムでも4行消費すること
- Excel VBAのOnTimeのように、1指定時間のアクションにつき1行が理想
理想により近い「1指定時間のアクションにつき1行」の模索(こちらは未テスト)
Do ' 無限ループ
If CDate(myTime1) > Time Then アクション1
If CDate(myTime1) < Time And CDate(myTime2) > Time Then アクション2
If CDate(myTime2) < Time And CDate(myTime3) > Time Then アクション3
If CDate(myTime3) < Time Then Exit Do ' ループを抜ける
Loop
所感
- シンプルで初級レベル
- 仮に想定通りに動くとして、、1行内をもっとスッキリさせたい
- きっと猛者さんたちから、「こうしたほうがもっとスマートだね」な案や、「ここをこうする必要があるね」なツッコミが複数寄せられるはず
- わたしも勉強させてもらう魂胆
- よーく考えたら、、次の指定時間までアクションが繰り返されちゃうか、、
- 次の指定時間まで待たせるには、、アクションに続けて次の指定時間まで待たせるコードを添える?と、アクションの引数扱いになっちゃうか、、
- やっぱり本家のもどきのほうに軍配が上がるか、、
- あるいは、このへんの併用を検討することで光が見えてくるか
https://www.google.com/search?q=VBS+Popup+時間+閉じる|消える