Windows の at コマンドをラップしてリマインダー作ろうとしたけど諦めた

結論

リマインダーとしては使い物にならない。

  • Q: Why?
    • A1: at コマンドで指定したコマンドラインはバックグラウンドで起動されるため ウィンドウが表示されない
    • A2: 毎24日の10:00に実行するタスク1を、10/24 9:59 に登録したとしても、1分後にタスク1が起動しない( 登録タスクの実施判定どうなってんだ?
    • A3: 10:00 に、10:00に実行するタスク1を登録すると、タスク1は明日実行されるタスクとして登録される( コマンドラインの動作確認のための即座起動はできない

まずウィンドウが表示されないのが致命的すぎる。リマインドできないじゃん。でなくとも実施判定が信用できないし、動作確認もしずらくて、うーん。。。

作業ログ

$ at 9:07 /every:24 "notepad.exe"

2017/10/24 09:07:34 にこれを叩いても即座に notepad.exe が実行されないんだが。

$ at 9:08 "notepad.exe"

2017/10/24 09:07:45 にこれを叩いても、09:08:18 になっても実行されないんだが。以下のように、at コマンドの一覧にも残ったままだし……

$ at
状態 ID     日付                    時刻          コマンド ライン
-------------------------------------------------------------------------------
        1   毎 24                   9:07          notepad.exe
        2   今日                    9:08          notepad.exe
        

Task Scheduler が起動してない?services.msc で見てみた。してるしてる。

……あ、コマンドラインとして「関連付けられたファイル」のみ対応ってこと?

$ at 9:12 "D:\work\gist\stakiran\gistfile1.md"

09:12:42 になってるのに起動しない。。。mdファイルに関連付けられてるエディタが起動するはずなのだが。

でも at コマンドの一覧からは消えている(起動したってこと)みたいだが。意味わからん。

$ at 9:12 /interactive "D:\work\gist\stakiran\gistfile1.md"

interactive もダメ。画面に出ないじゃねえか。

……プロセスを見てみる。ProcessExplorerで。そしたら notepad.exe が何個も立ち上がってやがる。なるほど、atコマンドはバックグラウンドで立ち上げやがるのか。かつ、立ち上げたプログラムが閉じられるまで at コマンド上でも表示され続ける と。んー。。。

ちなみにタスクのクリアはこう。

指定IDだけ消す。

$ at 1 /delete

全部消す(/yesは確認プロンプト無しで一気に実行)。

$ at /delete /yes