概要
スケジューラーもカレンダーもない(インストールさせてもらえない)PCで会議の時間を知らせてほしいと感じる瞬間はありませんか、私はありました。
正直slackのリマインダーだと情報多すぎて気づかないししょっちゅう会議の時間も変わるので、時間がテキスト入力できて、ダイアログ表示したり音を鳴らしたりしてほしいわけです。
Windows標準のアラーム&クロックを手で動かすのすら嫌な日のためのリマインダーバッチです。
更新
2023/11/23 引数をつけた実行もできるようにした。
2023/12/19 0-9分にタイマーを掛けた際にバグるのを修正
2023/12/25 複数アラートをまとめて実行を追加
2024/01/12 exitを追加してまとめて実行した際でもアラートが出ると閉じるようにした
2024/02/07 コメント入力と表示できるようにした、何分前に鳴らすか設定できるようにした
2024/02/08 09バグが治らないので一旦その部分を削除、09時と09分と09秒にバグります
コード
下記のコードをテキストファイルに貼り付けて拡張子を「.bat」にします。
文字エンコードはshift-jisを想定しています。
クリックしてアラートをかける時間を半角数字で入力します。
時間になるとアラートダイアログと、対応していればビープ音がなるはずです。
一応、秒数も考慮しており、ちょうど0秒にアラートが鳴ります。
@echo off REM 何秒前にアラートを鳴らすか(デフォルト)0分 set /a gap=-60*0 IF "%~1"=="" ( echo タイマーを鳴らす時分を入力 set /p hh="何時(0-23):" set /p mm="何分(0-59):" set /p cc="アラートメモ:" ) ELSE ( REM コマンドから実行 set /a hh=%1 set /a mm=%2 set cc=%3 ) REM 時分秒までの差分を取得 SET /a nHOUR=%time:~0,2% SET /a nMIN=%time:~3,2% SET /a nSEC=%time:~6,2% SET /a NOW_SEC=(%nHOUR%*60*60)+(%nMIN%*60) SET /a TIMER_SEC=(%hh%*60*60)+(%mm%*60)-%nSEC%+%gap% echo "%hh%時%mm%分に『%cc%』のアラートを鳴らします。" REM 対象時刻から現在時刻までの差分をタイマーに設定 set /a "ss=(%TIMER_SEC%-%NOW_SEC%)" REM タイマーを掛ける timeout %ss% REM 現在の時分秒を取得 SET HOUR2=%time:~0,2% SET MIN2=%time:~3,2% SET SEC2=%time:~6,2% REM 終了時にビープ音を鳴らす rundll32 user32.dll,MessageBeep REM 終了時にアラートを出す echo MsgBox "%HOUR2%時%MIN2%分%SEC2%秒になりました。『%cc%』の時間です。",vbInformation,"情報" > %TEMP%\msgbox.vbs & %TEMP%\msgbox.vbs del /Q %TEMP%\msgbox.vbs REM ターミナルを閉じる exit
動作確認
ダイアログで出てくる時刻はダイアログを表示した瞬間の時刻になっています。
ダイアログにアラートメモが出るようになりました。
スクショにはありませんが、多重起動もできます。
※中身をわかりやすくするため、バッチの中身をテキストエディタで開いています。
まとめて起動する
コマンドプロンプトやバッチからの実行もできます。
下記は10時56分にアラートを出す例です。
頭にstartとつけると別ウィンドウで開いてくれます。
start alert.bat 10 56 会議1
alert.batのあるフォルダ内で下記をバッチ(.bat)ファイルにして複数アラームをまとめて実行もできます。
start alert.bat 10 56 会議1 start alert.bat 22 0 会議2
おわり。