テキストエディタを自動起動する

基盤となるバッチファイルは作成されましたが、日々のメモを取るためのツールとしては完成度は低いまま。ここから何が必要かと言えば、テキストエディタの自動起動でしょう。今度はリスト02をご覧ください。

リスト02

 @echo off
    setlocal
    set CLFile=%USERPROFILE%\Documents\ChangeLog.txt
    set TmpFile1=%TEMP%\_input.txt
    set UserName=Y.Akutsu
    set MailAddress=xxx@cactus.ne.jp
    set Editor=%windir%\System32\notepad.exe

    if not exist %CLFile% (
        echo off > %CLFile%
        goto Action_Make
    )

 :Action_Make
    echo %date%%time% %UserName% ^<%MailAddress%^> > %TmpFile1%
    echo    * >> %TmpFile1%
    echo.>> %TmpFile1%

    cmd /c %Editor% %TmpFile1%

    copy /b %TmpFile1% + %CLFile% %TmpFile1% >>%TEMP%\NULL
    move %TmpFile1% %CLFile% >>%TEMP%\NULL
    goto end

 :end
    if exist %TEMP%\NULL del /f %TEMP%\NULL
    endlocal

ご覧のとおりリスト01と大差ありません。追加したのはローカル環境変数「Editor」と、「cmd /c %Editor% %TmpFile1%」の2行だけ。前者ではメモ帳の実行ファイルである「%windir%\System32\notepad.exe」を定義し、後者は実際にメモ帳を実行しています。バッチファイルから外部コマンドを呼び出す場合、通常は「start」コマンドを使うのが通例かつ利便性が高いのですが、実際には、パラメータの渡し方にクセがあり、今回のケースではコマンドプロンプトウィンドウが起動し、自動的に閉じません。そこで、指定されたコマンドを実行した後、終了する「/C」を使用して「cmd.exe」を直接実行することにしました(図08~09)。

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

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

このバッチファイルを実行してみましょう。今度はメモ帳が自動的に起動するようになりました。「*(アスタリスク)」の後にメモなどを入力し、メモ帳終了時にうながされるファイルの保存を実行しますと、「ChangeLog.txt」にその入力結果が反映されます(図10~11)。

図10 コマンドプロンプトを起動し、「Test02.bat」と入力して[Enter]キーを押します。メモ帳が自動的に起動しますので、ChangeLogのコメントを入力してメモ帳を終了し、<保存する>ボタンをクリックします

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

今回はメモ帳を使用しましたが、異なるテキストエディタをお使いの場合は、ローカル環境変数「Editor」を編集してください。例えば秀丸をお使いの場合、「set Editor="%ProgramFiles%\Hidemaru\Hidemaru.exe" /jx2,7」と変更します。「/jx」は起動時にカーソル位置を指定するためのオプションで、「jx2,7」は2行目の7桁目に移動するというもの。お使いのテキストエディタによって同様のオプションが用意されている可能性がありますので、色々とお試しください(図12~13)。

図12 テキストエディタを変更する場合は、ローカル環境変数「Editor」の部分を変更します

図13 ご覧のようにカーソルが「*」の後ろに移動した状態で起動しました

ちなみにテキストエディタに関する記述を取り除き、テキストファイル(ここでは「%TmpFile1%」)を直接実行する形式にしますと、Windows OSの関連付けを用いて起動します。