コマンドの実行結果は、通常はコマンドプロンプトのウィンドウ(画面)上にのみ表示される。後でその結果(ファイル名の一覧など)を再利用したくなったら、コマンドプロンプトウィンドウからコピーすることができる。
だがいつもこれを行うのは面倒だ。ファイル名の一覧リストを作りたいなら、最初からコマンドの実行結果をファイルに保存できると便利だ。そのため機能が「リダイレクト」である。
コマンドを実行する場合、その最後に(途中でもよいのだが)、「dir >diroutput.txt」のように指定すると(大なり記号「>」とファイル名を並べる)、コマンドの実行結果が画面ではなく、指定されたファイルに出力される(テキストファイルとして出力される)。
ファイルに書き出されるのは、画面に表示されるテキストそのものである。ファイルに保存できれば、後はエディタで開いて文書に貼り付けたり、再利用したりすることも容易だろう。
なお、リダイレクト先として指定されたファイルは、毎回新規作成される。すでに何か内容が入っていても、その内容は全て破棄され、先頭から上書きされる。
新規作成ではなく、既存のテキストファイルに追加したい場合は、「>」ではなく「>>」を使って「dir >>diroutput.txt」のようにする。するとdirコマンドの実行結果が末尾に追加される(ファイルが存在しない場合は、新規作成される)。
テキストとして保存されたファイルの内容を見るには、typeやmoreコマンドが利用できる。「type dir_output.txt」とすると指定されたファイルの内容が全て表示されるし、「more dir_output.txt」とすると、1ページずつ表示される。
例えば、あるフォルダのファイル一覧を、名前順にソートして(名前の昇順に並べ替えて)表示したい場合がある。すでに説明した通り、ファイルの一覧はdirコマンドで取得できる。詳しくは説明していないが、テキストを名前順に並べ替えるコマンドとしてsortコマンドがある。つまりdirでファイル一覧を取得してから、その結果をsortすれば、希望の一覧が得られるわけだ。
このような場合、dirコマンドの出力をファイルに保存し、sortコマンドで並べ替えてもよい。しかしそんなまどろっこしいことをしなくても、次のようにすれば、ファイルの一覧と結果のソートを続けて実施し、ソート後のファイル一覧が表示される。
これは「パイプ(パイプラインの略)」と呼ばれる機能だ。コマンドをパイプ「|(縦棒)」で区切ってつなぐと、前段のコマンドの出力が後段のコマンドへ渡され、処理される。
例えば「dir | sort」とすると、dirコマンドの実行結果がsortコマンドに渡され、sortの結果が画面に表示される。sortは渡されたデータをソートして(文字列として見た場合の昇順にソートして)出力するコマンドである。
なおdirの実行結果は、先頭にファイルの更新日付が表示されているため、単にソートコマンドに渡すと、実は、その日付順(日付を単なる文字列と見なして、その文字の昇順)にソートされることになる。ファイル名の部分でソートしたければ、ファイル名の部分の場所(左端から37桁目)を指定して、「dir | sort /+37」のようなsortコマンドを実行する必要がある(実際に何桁目になるかは、実験して調べること。言語が異なるWindows OSだと表示が異なる可能性があるため)。
ファイル名情報だけをソートしたければ、dirに/bオプションを付けて名前のみを表示させ、「dir /b | sort」とする。
コマンドの実行結果をパイプでclipコマンドに渡すと、結果がクリップボードにコピーされる。この機能を使えば、例えばコマンドの実行結果をすぐにテキストエディタやワープロアプリに[Ctrl]+[V]で貼り付けることができるので便利だろう。
これを応用して、サブフォルダの中も全て列挙して、ソートして、クリップボードへコピーするなら、「dir /s /b | sort | clip」とすればよい。パイプは多段になっても構わない。
このように、あるコマンドの実行結果を次々に別のコマンドに渡して順次処理することを「フィルタ処理」と呼ぶことがある。フィルタ処理を行うプログラムを多数つないで複雑な処理を行うのは(例:ある結果をソートして、検索して、変換して、成形して、出力する、など)、CUI処理の威力を最も発揮できる分野である。このために、比較的単機能なフィルタプログラムがCUI環境では多数使われ、普及している。
今回はWindowsファイルシステムの基礎と主なコマンド、リダイレクトやパイプなどの利用方法について解説した。これらのコマンドを手始めに、各コマンドがどんな機能を持っているか、ヘルプなどを参照しながら、いろいろ実行させて学習するとよいだろう。ただし操作を誤ると致命的な問題が起こる可能性が高いので(間違って重要なシステムファイルを削除してしまうなど)、テスト用のフォルダを作成して、最初はその中で操作するとよいだろう。
次回はコマンドプロンプト連載の最後として、処理を自動化するバッチファイルについて解説する。
Copyright© Digital Advantage Corp. All Rights Reserved.