2013/03/25

雑なリマインダ その2

以前、こんなものを作った。

こんな雑なbatだけど今でも使っている。でもタスクバーにcmdが出っぱなしなのでうざい。間違って閉じてしまうこともある。ということで、改良というより作りなおしてwindows標準のタスクスケジューラに登録するようなものにした。Windows7だと動くと思います。

@ECHO OFF
ECHO --------------------------------------------
ECHO 指定時刻にメッセージを表示します
ECHO --------------------------------------------
SET /p MESSAGE_TEXT="メッセージを入力して下さい > "
SET /p START_TIME="時刻を指定して下さい(ex. 09:15) > "
SET TIME2=%time: =0%
SET TASK_CREATE_TIME=%TIME2:~0,2%%TIME2:~3,2%%TIME2:~6,2%
SET TASK_CREATE_DATE=%date:~-10,4%%date:~-5,2%%date:~-2,2%
SET TASK_ID=%USERNAME%-%TASK_CREATE_DATE%%TASK_CREATE_TIME%
SCHTASKS /CREATE /SC ONCE /TN %TASK_ID% /TR "msg.exe console "%MESSAGE_TEXT% /ST %START_TIME% /V1 /Z
PAUSE
view raw reminder2.bat hosted with ❤ by GitHub

タスクは実行されたあとに削除されるようになっている(/Zオプション)。ただ/ZオプションをつけただけだとXMLがどうのこうのというエラーが出るので/V1オプションを付けてある。

エラー: タスク XML に必須の要素または属性が含まれていません。
(41,4):EndBoundary:

タスクスケジューラに登録するID文字列を作るときに日付と時間を使ってるんだけど、そのフォーマット指定がえらいことになってる。

それと、結局使ってないけど、コマンドの結果を変数に保存するのにforを使う必要があるらしく、これもやけに大変だな・・・。勉強になるなぁ(白目

@FOR /F "usebackq tokens=*" %%i in (`DATE /T`) DO @SET TASK_CREATE_DATE=%%i

ついでにメモしておくと、unixでいう cat は type、diff は fc、traceroute は tracert、grep は findstr、ifconfig は ipconfig 辺りで代用できるって認識で良いのかね。more、arp、ping、netstat、nslookup なんかは同じのがあるようで。


1 件のコメント:

  1. I am questioning that during this time you must deliver a try and this new app MediBang Paint Apk : which is now maximum trending app inside the global.

    返信削除