続いて、8行目で保存した文字列をローカル環境変数「TodoFile」で設定したファイルに出力し、10行目で保存した文字列を標準出力して処理完了となりました。ちなみに今回は環境変数を使用しましたが、入力文字数が多くなる可能性がある場合は、リスト02bのようにファイル操作を交えた方が確実です(図07~10)。

図07 メモ帳を起動し、リスト02の内容を入力して[Ctrl]+[S]キーを押します

図08 ダイアログが起動したら、保存先をデスクトップに変更し、ファイル名のテキストボックスに「"Test02.bat"」と入力して<保存>ボタンをクリックします

図09 コマンドプロンプトを起動し、「Test02.bat」と入力して[Enter]キーを押します。

図10 これでドキュメントフォルダーにある「TODO.txt」に

図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)。

図11 メモ帳を起動し、リスト03の内容を入力して[Ctrl]+[S]キーを押します

図12 ダイアログが起動したら、保存先をデスクトップに変更し、ファイル名のテキストボックスに「"Test03.bat"」と入力して<保存>ボタンをクリックします

図13 コマンドプロンプトを起動し、「Test03.bat」と入力して[Enter]キーを押します。プロンプトが表示されたら書式に従ってTODOを入力して[Enter]キーを押してください

図14 これでドキュメントフォルダーにある「TODO.txt」に図13で入力したTODOが登録されました