MicrosoftがリリースしているOS「Windows 7」は、GUI(グラフィカルユーザーインタフェース)を主なUI(ユーザーインタフェース)として採用していますが、CUI(コマンドラインユーザーインタフェース、またはキャラクタユーザーインタフェース)である「コマンドプロンプト」も用意しています。そこで本稿では、このコマンドプロンプト上で動作するコマンドや、特定の作業を自動化するバッチファイルを使用し、いろいろと役に立つライフハック的な活用方法を紹介していきます。
初回は簡単なところで「dir」コマンドを使ってみましょう。同コマンドは、GUI上では「フォルダー」と呼ばれる実体の「ディレクトリ」を表示するための機能として用意され、そこから名付けられました。コマンドプロンプトから「dir」と実行しますと、現在のフォルダー(通常はユーザーフォルダー)の内容が表示されました(図01~02)。
図01 [Win]+[R]キーを押してファイル名を指定して実行を起動し、テキストボックスに「cmd」と入力して<OK>ボタンをクリックします |
図02 コマンドプロンプトが起動したら、プロンプトに「dir」と入力して[Enter]キーを押します。これで、ディレクトリ(フォルダー)の内容が表示されました |
最初に学んでおかなければならないのが、フォルダーとディレクトリという名称。前者はWindows 7の操作に慣れている方ならご存じのとおり、ファイルやサブフォルダー格納するためのものですが、後者のディレクトリも同じ意味を持ちます。Windows OSが登場する以前から企業や研究所で使われていたUNIXは、本来CUIを用いたOSであるため、ファイルを格納する一種のグループをディレクトリと称していました。
GUIを用いたWindows OSも当初はMS-DOS時代の名残からディレクトリという名称を用いていましたが、直感的ではないため、Windows 95以降から「フォルダ」に変更しています。つまり、フォルダーとディレクトリはまったく同じものであり、単に名称が異なるだけだとお考えください。また、本稿ではCUI操作に限り、ディレクトリという名称を使いますので、あらかじめご了承ください。
さて、日常的に作成しているWord文書やExcel文書は、通常ドキュメントフォルダーに保存していることでしょう。この一覧を表示させるには、「dir %USERPROFILE%\documents」と実行してください。dirコマンドの後にフォルダーのパスを加えることで、指定したフォルダーの内容を表示することが可能です。なお、「%USERPROFILE%」は環境変数というWindows OSが提供するデータ共有機能を用いたもので、同変数には現在のユーザーが使用するユーザーフォルダーのパスが格納されています。
これで、ドキュメントフォルダー内のファイルがすべて表示されますが、大量のファイルを保存している場合、そのまま一覧情報がスクロールしてしまうため、見やすくありません。そこで、「dir %USERPROFILE%\documents*.doc」と実行してみましょう。今度はWord文書ファイルのみ一覧表示されました。これがワイルドカードという機能で、コマンドラインでは多用されます(図03~04)。
この機能を用いて、ファイルの一覧情報をテキストファイルに保存しましょう。客先に納品する際に添付するファイル一覧表や、自身のファイル管理など様々な用途に用いることが可能です。コマンドプロンプトから「dir /b %USERPROFILE%\documents*.doc > list100901.txt」と実行してください。これで、ユーザーフォルダーファイルの一覧情報を持つテキストファイルが作成されました。
このコマンドで用いた「/b」オプションは、見出しや要約を取り除き、ファイル名のみを表示するためのものです。また「>」はリダイレクトという機能であり、通常はそのままコマンドプロンプト上に表示されますが(標準出力)、リダイレクトとファイル名を記述することで、出力先をファイルに変更することができるのです。ちなみに「>>」と右アングルブラケットを重ねますと、上書きではなく末尾から追記することもできます(図05~06)。
図05 「dir /b %USERPROFILE%\documents\*.doc > list100901.txt」と入力して[Enter]キーを押しますと、Word文書ファイルの一覧がテキストファイルに保存されます |
メモ帳などで閲覧できます |
これでファイルの一覧をテキストファイル化することができましたが、毎回コマンドラインから実行するのは骨の折れる作業となるでしょう。そこで、今日の日付を取得してファイル名を用いるバッチファイルを用意しました。こちらをWindows OSのタスク機能を用いることで完全自動実行化できます。今回はわかりやすくデスクトップに作成しましたが、通常は専用のフォルダーを作成するなどし、バッチファイル内で指定している環境変数「ListOutput」の値を変更してください(図07~08、リスト01)。
リスト1
@echo off
setlocal
set Target=%USERPROFILE%\documents\
set FileExt=*.doc
set YYYYMMDD=%DATE:/=%
set ListOutput=%USERPROFILE%\Desktop\
dir /b %Target%%FileExt% > %ListOutput%list%YYYYMMDD%.txt
endlocal
図07 リスト01の内容をメモ帳などに入力し、任意のファイル名(拡張子は「.bat」)で保存します |
図08 バッチファイルを実行しますと、今日の日付を名前に持つファイルが作成されました |
ここでもう一つのテクニックを紹介しましょう。前日作成された一覧ファイルと本日の一覧ファイルを比較するには、2つのファイルを比較し、相違点を表示する「fc」コマンドを使用します。コマンドプロンプトから「fc /n {前日のファイル} {本日のファイル}」と実行してください。画面の例では「Windows Services.docx」というファイルが新たに加わったことを確認できました。本機能は特定フォルダーの監視などを用いましょう(図09)。
阿久津良和(Cactus)