MicrosoftがリリースしているOS「Windows 7」は、GUI(グラフィカルユーザーインターフェース)を主なUI(ユーザーインターフェース)として採用していますが、CUI(コマンドラインユーザーインターフェース、またはキャラクタユーザーインターフェース)である「コマンドプロンプト」も用意しています。本稿では、このコマンドプロンプト上で動作するコマンドや、特定の作業を自動化するバッチファイルを使用し、ライフハック的な活用方法を紹介していきます。今回はChangeLog風のメモ作成バッチファイルを作ってみましょう。
ChangeLog風のメモ作成バッチファイルを作る
UNIX文化に触れている方にはお馴染みですが、ソフトウェア開発者なら一度は「ChangeLog(チェンジログ)」を作成したことがあるでしょう。ChangeLogとは、開発したソフトウェアや単独のソースコード、もしくは開発プロジェクトの変更履歴を記述ためのテキストフォーマットです。
UNIXで開発を行なっているプログラマやコンピュータ技術者に愛用者が多いテキストエディタ「Emacs(イーマックス)」では、簡単に新しいログ(日付け、名前、および電子メールアドレス)を追加するchange-log-modeが用意されていることからも、開発者における普遍性の高さを理解できることでしょう(図01)。
一昔前はChangeLogにおける利便性の高さから、メモ帳代わりや日記ツールとして使っている方も少なくありませんでした。前回は「findstr」コマンドを使ってTODOの作成および表示を行ないましたが今回は、この作成部分をChangeLog風に置き換えるバッチファイルを作成してみましょう。ただし、ChangeLogの書式に関しては様々な意見がありますので、今回は日付け、名前、および電子メールアドレスを自動追加する部分に注力します。
リスト01
@echo off
setlocal
set CLFile=%USERPROFILE%\Documents\ChangeLog.txt
set TmpFile1=%TEMP%\_input.txt
set UserName=Y.Akutsu
set MailAddress=xxx@cactus.ne.jp
if not exist %CLFile% (
echo off > %CLFile%
goto Action_Make
)
:Action_Make
echo %date%%time% %UserName% ^<%MailAddress%^> > %TmpFile1%
echo * >> %TmpFile1%
echo.>> %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をご覧ください。序盤に設定しているローカル環境変数「UserName」および「MailAddress」は、文字どおり自身の名前と電子メールアドレスを意味します。お好みに応じて変更してください。最初にローカル環境変数「CLFile」で設定したChangeLogファイルの存在をチェックしてから、実際のアクションに移ります。
ラベル「Action_Make」では、前述のローカル環境変数や環境変数「date」「time」を用いて、ログを出力しています。ここでは電子メールアドレスを囲む記号として「<>」を使用していますが、各記号は出力結果をファイルやほかのコマンドに渡す"リダイレクト"を意味するため、そのまま記述するとエラーになってしまい、バッチファイルが動作しません。これを避けるため、特殊文字の前に「^(ハット記号)」を用いて単独の文字であることを明示化しています。
ここでリダイレクトに関する説明も行ないましょう。「>」の先がファイルの場合、出力先の内容にかかわらず新規作成を実行します。その一方で「>>」と記述した場合、ファイル末尾に追加されます。ChangeLogは新しいログがテキスト冒頭に存在するため、ただ追記するだけでは面白くありません。そこで、ログの出力先を一時ファイルとします。続いて一時ファイルを既存のChangeLogと結合した後に、一時ファイルをChangeLogファイルにリネームするロジックを採用しました(図02~05)。
図02 [Win]+[R]キーを押し、ファイル名を指定して実行のテキストボックスに「notepad」と入力して<OK>ボタンをクリックします |
図05 [Win]+[R]キーを押し、ファイル名を指定して実行のテキストボックスに「cmd」と入力して<OK>ボタンをクリックします |
バッチファイルを実行しますと、ドキュメントフォルダーに「ChangeLog.txt」が自動生成され、実行時の日時を使用したログが作成されます。任意のテキストエディタを使用し、メモを記述してください(図06~07)。