今回はコマンドプロンプトで利用できる主なコマンドを紹介する他、Windowsファイルシステムの基礎知識、リダイレクト/パイプなどを使った活用方法も解説する。
前回はコマンドプロンプトの起動法に続き、最も基本的なコマンドの1つ、dirコマンドを例にとって、実行方法やオプションの存在についてご紹介した。ひとまず、コマンドプロンプト活用の基礎の基礎は駆け足で学んだことになるが、本当に活用するには、どんなコマンドが使えるのかにある程度精通する必要がある。使えるコマンドは多岐にわたるので、その全てをここで紹介することはできないが、利用頻度の高そうな基本的なコマンドのいくつかを紹介し、コマンドプロンプトの醍醐味について知っていただくとしよう。
またこれに加え今回は、コマンドラインをより活用するためのパスの表記方法やフォルダの扱い、コマンドの実行結果を画面に表示するのではなくファイルに保存するリダイレクト、複数のコマンドを組み合わせて使えるパイプなどについても説明する。
コマンドプロンプト上で作業する場合、避けて通れないのがWindows OSのファイルシステムに対する理解である。GUIでは、マウスでドラッグドロップすればよいわけだが、CUIではマウスが使えないので、ファイルやフォルダの指定をテキストで行う必要がある。コマンドプロンプトを使う場合、Windows OSのファイル名を直接、しかも正確に指定する必要に迫られることが多い。
例えばユーザーのドキュメントフォルダは、エクスプローラの上では単に「ユーザー1のドキュメント」のように表示されているが、本当の場所(ファイルシステム上での実際の場所)は「C:\Users\user01\Documents」といった場所である。エクスプローラ(GUIのツール)が本当の場所を「隠蔽して」表示しているのは、ユーザーの利便性を考えてのことだ。
だがコマンドプロンプトを使う場合は、そのような隠蔽(変換措置)は行われず、Windows OSのファイルシステムの“生の”状態がほぼそのまま見えることになる(歴史的に言えば、コマンドプロンプトはエクスプローラよりもずっと前から存在していたので、互換性のために余計なことをしないようになっている)。そのため、コマンドプロンプトを使うためには、ファイルシステムのことも知っておく必要がある。
Windows OSのファイルシステムを図にすると次のようになる。
主な特徴は次の通りだ。
コマンドプロンプトでは、ファイルやフォルダを指し示すために、「パス名」という表記方法が使われる。パス名とは次のように、ドライブ名とルートを表す「\」、フォルダ階層名、ファイル名を「\」で区切って並べたものである。名前の途中に空白記号を含む場合は全体を引用符「"」で囲む。囲まないと、空白文字がコマンドやパラメータの区切りとして扱われてしまうからだ(例:「dir "C:\Program Files"」のつもりで「dir C:\Program Files」としてはいけない)。
Windows OSには、「カレントドライブ」や「カレントフォルダ」(カレントディレクトリとも言うが、本記事では全てフォルダで統一する)という特別な概念がある。ファイル名やフォルダ名などの指定が絶対パス表記(後述)になっていない場合、必要に応じてこのカレントドライブやカレントフォルダの情報が補われて、最終的なファイルやフォルダの場所(パス)が決定される。
カレントドライブとは、パス指定にドライブ名が含まれていない場合に使われる、デフォルトのドライブ名のことである。コマンドプロンプトを起動した直後は、(何も設定していないと)C:がカレントドライブとなっている。
カレントフォルダとは、パス指定が「\(ルート)」から始まっていない場合に使われる、デフォルトのフォルダのことである。
起動直後のコマンドプロンプトウィンドウには、プロンプト記号として「C:\Users\user01>」のように表示されているが、これはカレントドライブが「C:」、カレントフォルダがC:の「\Users\user01」であることを表している。
注意したいのは、Windows OSではドライブごとに、それぞれカレントフォルダが存在する、ということだ(正確には、実行中のアプリケーションごとに、それぞれ独自のカレントドライブが存在し、さらにそのドライブごとにカレントフォルダが存在する)。
カレントドライブやカレントフォルダが異なると、同じ名前でも別のファイルやフォルダを表す。例えばC:とD:のカレントフォルダが同じ\Docだったとしても、C:file.txtとD:file.txtは別のファイルである。
ドライブ名の直後にある「\」は、そのドライブのルート(一番上)を表す特別な場所である。これを含むパス名(「\」から始まっているパス名)を「絶対パス」、そうでないパス名を「相対パス」という。
パスの表記が相対パスの場合、実際のファイルの場所はカレントフォルダによって(つまり状況に応じて)変わることになるので注意が必要である。
コマンドラインでファイル名を指定する場合、複数のファイルをまとめて扱いたいことがある。例えば、「文書〜」で始まる全ファイルと、「.txt」という拡張子を持つ全ファイルをまとめてコピーしたいとか、「.log」という拡張子のファイルを全部削除したい、といった場合だ。先のdirコマンドの例では、「.txt」「.doc」「.log」の拡張子を持つファイル全部を表示していた。
こんな場合は、「ワイルドカード」という特殊な文字を使ってファイルを指定するとよい。
ファイル名中で「*」を使うと、それは任意の長さの文字/文字列にマッチする。例えば「文書*」とすると「文書」で始まる全ファイルにマッチする。「文書1.doc」「文書です.docx」「文書A.txt」にマッチするが、「重要文書.doc」にはマッチしない。また、「.docx」といった特定の拡張子を持つファイルのみをマッチさせたいのであれば、「*.docx」とすればよい。単に「*」だけだと、どのファイルにもマッチする。
「*」は任意の長さの文字にマッチするが、「?」は1文字だけにマッチする。例えば「text?.txt」は「text1.txt」「text2.txt」にはマッチするが、「textABC.txt」にはマッチしない。
なおWindows OSでは、パスの途中にある*や?にはマッチしない。例えば「\*\doc」は「\user1\doc」と「\user2\doc」のいずれにもマッチしない。*や?は、パスの最後の部分にあるフォルダ名やパス名の部分でのみ利用可能となっている。
長いパス名を手動で間違いなく入力するのはとても困難である。そんな場合は以下の方法を使うと、パス名を簡単に入力できる。
パス名を途中まで入力してから[Tab]キーを押すと、入力された名前に一致するファイル名やフォルダ名が自動的に補完入力される。複数マッチする場合は、繰り返し[Tab]キーを押せば、順番に合致するファイルが表示される。例えば「ab」まで入力してから[Tab]キーを押すと、「abc.txt」「abstract.doc」……のように、「ab」で始まる名前の項目が順次表示される。
エクスプローラでファイルやフォルダを選択し、それをコマンドプロンプト上へドラッグ&ドロップすると、フルパス名がカーソル位置に自動的に入力される。パス名中に空白文字が含まれている場合は全体が引用符で囲まれるので便利だ。
エクスプローラでファイルやフォルダを選択し、[Shift]キーを押しながら右クリックするとポップアップメニューに[パスとしてコピー]という項目が表示される。これを実行するとフルパス名がクリップボードにコピーされるので、それをコマンドプロンプトへ「貼り付け」ればよい。コマンドプロンプトへクリップボードの内容を貼り付けるには、コマンドプロンプト上でマウスを右クリックする。
Copyright© Digital Advantage Corp. All Rights Reserved.