バッチファイルでポモドーロ・テクニックを使いたい

bat/cmd

概要

ポモドーロ・テクニックの本を読みました。

なんだか集中できて便利らしい、さっそく使おう! と思ったけどタイマーがなかった。
あるいは職場のWindowsに勝手にソフトを入れられないけど、ポモドーロ・テクニックを使いたいぞ! という瞬間がありますよね。
ダブルクリックでタイマーセットしたいだとか。

Windowsにもとから入ってるコマンドプロンプトを使ってポモドーロできないかな・・・と思った結果がこちらの記事になります。

メモ帳などのテキストエディタで.batファイルを作るだけでタイマーがかけられて便利です。

更新履歴

2021/01/25 終了時に警告音を鳴らせるようにした
2021/04/15 微妙だったコードを修正

作り方

作成方法は、メモ帳などのテキストエディタで下記のコードを書いて、拡張子を.batにします。

「新しいテキスト ドキュメント.txt」を「5min.bat」とか「25min.bat」とかいうファイル名にする感じです。
「.txt」「.bat」の部分が拡張子になります、環境によっては表示されないので、拡張子を表示してから変更しましょう。

あとは.batファイルをクリックするだけで秒数をカウントダウンしてくれるタイマーがかけられて便利です。
集中できないときとかにどうぞ。

コード

25分のポモドーロ

@echo off
REM 5分のタイマーを掛けたい場合
set /a min=25

REM タイマーを秒数にする
set /a sec=%min%*60

REM タイマーを掛ける
timeout %sec% 

REM 終了時に音声を鳴らす
rundll32 user32.dll,MessageBeep

REM 終了時にアラートを出す
echo MsgBox "%min%分が経ちました。",vbInformation,"情報" > %TEMP%\msgbox.vbs & %TEMP%\msgbox.vbs 
del /Q %TEMP%\msgbox.vbs

5分のポモドーロ(休憩用)

@echo off
REM 5分のタイマーを掛けたい場合
set /a min=5

REM タイマーを秒数にする
set /a sec=%min%*60

REM タイマーを掛ける
timeout %sec% 

REM 終了時に音声を鳴らす
rundll32 user32.dll,MessageBeep

REM 終了時にアラートを出す
echo MsgBox "%min%分が経ちました。",vbInformation,"情報" > %TEMP%\msgbox.vbs & %TEMP%\msgbox.vbs 
del /Q %TEMP%\msgbox.vbs

実行するとタイマーをかける時間(分)を入力できるタイプのポモドーロ

@echo off
REM タイマーを掛ける時間を入力する
set /p min="タイマーにセットしたい分数を入力してください:"

REM 1分のタイマーを掛けたい場合
REM set /a min=1

REM タイマーを秒数にする
set /a sec=%min%*60

REM タイマーを掛ける
timeout %sec% 

REM 終了時に音声を鳴らす
rundll32 user32.dll,MessageBeep

REM 終了時にアラートを出す
echo MsgBox "%min%分が経ちました。",vbInformation,"情報" > %TEMP%\msgbox.vbs & %TEMP%\msgbox.vbs 
del /Q %TEMP%\msgbox.vbs

解説

Windows7以降ならtimeout関数が使えるそうなのでそれを使ってカウントダウンしています。
timeout関数は引数の秒数だけ待機してくれる関数です。

これだけだと終了したかどうかがわからないので、アラートを表示させます。

警告音を鳴らすのにMessageBeepが使えます。

アラートはメッセージボックス表示させるvbsを作って実行、削除という方法で実現しています。

文字化けする場合は.batファイルの文字コードがshift-jisになっているか確認してみてください。
逆にコマンドプロンプトの文字コードがshift-jsでない場合も文字化けしたりします。

実行のようす(分数を指定するバージョン)

起動時

待機したい分数を入力してEnterを押すとカウントダウンが始まります。
(カウントダウン中になにかのキーを押すとアラートまで進んでしまうので、カウント中はウィンドウを最小化しておきましょう)

入力分数経過すると、vbsで作ったアラートが実行されます。

おわり。