「リダイレクト」でコマンドの結果をファイルに保存
コマンドの実行結果は、通常はコマンドプロンプトのウィンドウ
(画面)上にのみ表示されます。
後でその結果(ファイル名の一覧など)を再利用したくなったら、
コマンドプロンプトウィンドウから
コピーすることができます。
つもこれを行うのは面倒。ファイル名の一覧リストを作りたいなら、
最初からコマンドの実行結果をファイルに保存できると便利です。
そのため機能が「リダイレクト」です。
★出力のリダイレクト機能
コマンドを実行する場合、その最後に(途中でもよいですが)、
「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コマンドで結果をクリップボードに送る
コマンドの実行結果をパイプでclipコマンドに渡すと、
結果がクリップボードにコピーされます。
この機能を使えば、例えばコマンドの実行結果をすぐに
テキストエディタやワープロアプリに[Ctrl]+[V]で
貼り付けることができるので便利です。
ファイル名をクリップボードへコピーする例
「dir /b」はファイル/フォルダ名の一覧のみを表示するというコマンド
(名前以外の余計な情報は表示されない)。
この結果をパイプでclipコマンドへ送り、
クリップボードへコピーしている。
こうすると、アプリケーションへ簡単に貼り付けできます。
これを応用して、サブフォルダの中も全て列挙して、
ソートして、クリップボードへコピーするなら、
「dir /s /b | sort | clip」とよい。
パイプは多段になっても構わない。
★パイプ機能でコマンドをどんどんつないで
連続実行するフィルタ処理
あるコマンドの実行結果を次々に別のコマンドに渡して
順次処理することを「フィルタ処理」と呼ぶことがあります。
フィルタ処理を行うプログラムを多数つないで複雑な処理を行うのは
(例:ある結果をソートして、検索して、変換して、成形して、出力する、など)、
CUI処理の威力を最も発揮できる分野です。
このために、比較的単機能なフィルタプログラムが
CUI環境では多数使われ、普及しています。
Windowsファイルシステムの基礎と主なコマンド、
リダイレクトやパイプなどの利用方法について紹介しました。
これらのコマンドを手始めに、各コマンドがどんな機能を持っているか、
ヘルプなどを参照しながら、
いろいろ実行させて学習するとよいと思います。
ただし操作を誤ると致命的な問題が起こる可能性が高いので
(間違って重要なシステムファイルを削除してしまうなど)、
テスト用のフォルダを作成して、
最初はその中で操作するとよいでしょう。