TODOを呼び出すバッチファイルを作成する
先ほどのバッチファイルで作成したTODOファイルを元に、当日のタスクを表示するバッチファイルを作成しましょう。まずはリスト04をご覧ください。ここではファイルから文字列を検索する「findstr」コマンドを使用します。
リスト04
@echo off
setlocal
set TodoFile=%USERPROFILE%\Documents\TODO.txt
set YYYYMMDD=%DATE:~0,10%
findstr %YYYYMMDD% %TodoFile% >> %TEMP%\NULL
if %ERRORLEVEL%==1 goto end
if %ERRORLEVEL%==0 findstr %YYYYMMDD% %TodoFile%
:end
if exist %TEMP%\NULL del /f %TEMP%\NULL
endlocal
検索文字列として使用する当日の日付は、4行目で生成しました。ここでは、ローカル環境変数「YYYYMMDD」に「%DATE:~0,10%」として代入しています。これは、環境変数「DATE」に含まれている文字列の先頭から10文字目だけ取り出すというもの。この文字列は「地域と言語」ダイアログの<形式>タブでカスタマイズ可能で、「日付け(短い形式)」が「yyyy/MM/dd」や「yyyy/mm/dd('ddd')」の場合は正しく動作しますが、「形式のカスタマイズ」ダイアログで元号などを追加している場合、日付けを正しく取得できません。この場合はお使いの環境に合わせて取り出す文字列の位置を調整してください。
この日付を用いて、TODOファイルから文字列を取り出しますが、マッチしない場合の処理を加えるため、「if」コマンドを使用しました。「findstr」コマンドは検索結果がある場合、エラーレベルに「0」を代入し、検索結果がない場合は「1」を代入しています。
このロジックを利用し、8から9行目で条件分岐処理を行ない、正しい場合は「findstr」コマンドを再実行し、異なる場合はそのまま終了します。ちなみにタスクの内容に同一の日付表記を用いますと、そちらまでマッチしてしまうことも。この場合は正規表現を用いることで対応可能ですが、今回は割愛します。ご了承ください(図15~18)。
図15 現在のTODOファイルは画面のような状態になっています |