さて、これで二つのバッチファイルを作成したことになりますが、やはり一つのファイルにまとめた方が利便性も向上することでしょう。そこで、起動オプションによって動作が異なるバッチファイルを作成します。まずはリスト05をご覧ください。
リスト05
@echo off
setlocal
set TodoFile=%USERPROFILE%\Documents\TODO.txt
set YYYYMMDD=%DATE:~0,10%
set TMP01=%1
set CMDOPT=%TMP01:~1,1%
if "%CMDOPT%" == "a" goto TodoMake
if "%CMDOPT%" == "e" goto TodoExecute
if "%1" == "" goto HelpMsg
:TodoCheck
if not exist %TodoFile% (
echo off > %TodoFile%
goto TodoMake
)
:TodoMake
echo 「2010/11/01(半角空き)予定の内容」と入力し、[Enter]キーを押してください。
echo -----
set /p INP="> "
echo %INP% >> %TodoFile%
goto end
:TodoExecute
findstr %YYYYMMDD% %TodoFile% >>%TEMP%NULL
if %ERRORLEVEL%==1 goto end
if %ERRORLEVEL%==0 findstr %YYYYMMDD% %TodoFile%
goto end
:HelpMsg
echo %~n0: [/a][/e]
echo /a Add TODO
echo /e List TODO
:end
if exist %TEMP%\NULL del /f %TEMP%\NULL
endlocal
いくつかの冗長的な部分を削り、スクリプトとして動作する部分を加えることで、一般的なコマンドと同じようにコマンドラインオプションに対応しました。6行目から10行目に加えた条件分岐により、「test05.bat /a」と実行することでラベル「TodoMake」にジャンプし、Test03.batと同じくTODOの追加を実行します。「test05.bat /e」と実行すれば、ラベル「TodoExecute」にジャンプし、Test04.batと同じくTODOの表示を行ないます。何もオプションを付けていない場合はラベル「HelpMsg」にジャンプし、使い方を表示します(図19~22)。
ちなみに本稿では「Test~」と味気ないファイル名を付けていますが、お使いになるときは「TODO.bat」などわかりやすいバッチファイル名に変更してください。