続いて、8行目で保存した文字列をローカル環境変数「TodoFile」で設定したファイルに出力し、10行目で保存した文字列を標準出力して処理完了となりました。ちなみに今回は環境変数を使用しましたが、入力文字数が多くなる可能性がある場合は、リスト02bのようにファイル操作を交えた方が確実です(図07~10)。
図09で入力したTODOが登録されました |
リスト02b
@echo off
setlocal
set TodoFile=%USERPROFILE%\Documents\TODO.txt
set TmpFile1=%TEMP%\_input.txt
echo 「2010/11/01(半角空き)予定の内容」と入力し、
echo 最後に[Ctrl]+[Z]→[Enter]とキーを押してください。
echo -----
copy con %TmpFile1% >>%TEMP%\NULL
echo -----
type %TmpFile1%
echo -----
echo と、入力されました。
copy /b %TmpFile1%+%TodoFile% %TmpFile1% >>%TEMP%\NULL
move %TmpFile1% %TodoFile% >>%TEMP%\NULL
:end
if exist %TEMP%\NULL del /f %TEMP%\NULL
endlocal
これで各入力システムが完了しましたので、一つのバッチファイルにまとめてみましょう。リスト03をご覧になるとわかるように、5~8行目の内容がリスト01と大きく異なっています。最初に作成したバッチファイルは「TODO.txtファイルが存在するか確認し、存在しない場合は新たに作成する」という処理でした。
つまり「ファイルが存在する場合はそのまま次の処理に移り、存在しない場合のみ生成処理が必要」となりますので、否定型条件判断となる「if not」コマンドを使用すればよいのです。そのため、冗長となる部分を短くまとめました。
リスト03
@echo off
setlocal
set TodoFile=%USERPROFILE%\Documents\TODO.txt
if not exist %TodoFile% (
echo off > %TodoFile%
goto TodoMake
)
:TodoMake
echo 「2010/11/01(半角空き)予定の内容」と入力し、[Enter]キーを押してください。
echo -----
set /p INP="> "
echo %INP% >> %TodoFile%
echo -----
echo 「%INP%」を登録しました。
:end
endlocal
このバッチファイルを「MakeTodo.bat」などとして作成し、TODO作成に使用します。ちなみにWindows 7上で使用できる標準コマンドでは、テキストの内容処理を直接加工することができませんので、不要になったTODOはテキストファイルから直接削除しなければならないことを、あらかじめご了承ください(図11~14)。
図14 これでドキュメントフォルダーにある「TODO.txt」に図13で入力したTODOが登録されました |