連載
» 2017年09月14日 05時00分 公開

ファイルシステムの基礎と基本的なコマンドの使い方超入門コマンドプロンプト(2/4 ページ)

[打越浩幸,デジタルアドバンテージ]

コマンドプロンプトで利用できる代表的なコマンド

 コマンドプロンプトで利用できるコマンドは非常に多い。helpで表示されるコマンドをざっと数えても100を超えるほどだ。それ以外にも、さまざまなアプリにもコマンドが付属している。まずはここで、CUIでよく行うであろう作業と、そのために利用できるコマンド名を以下に挙げてみよう。まずは表を斜め読みして、どんな機能がコマンドとして用意されているのか、ざっと眺めてみてほしい。

目的/用途 使用できるコマンドや使い方
名前の確認 dir
フォルダのツリー構造の表示 tree
カレントフォルダの確認 cd(引数なしでcdコマンドを実行する)。別のドライブのカレントフォルダを確認したい場合は「cd d:」のようにドライブ名をパラメータとして指定する
カレントフォルダの変更 cdに移動先のフォルダを指定する
カレントドライブの変更 C:やD:のようにドライブ名だけを入力する
ファイルの作成 アプリで書き込んだり、リダイレクトで新規作成したり、コピーコマンドで複製したりする
ファイルの削除 del(eraseでも同じ)。注:このコマンドではフォルダは削除できない
フォルダの作成 md(mkdir)
フォルダの削除 rd(rmdir)
あるフォルダ以下のファイルとフォルダの全削除 rd(rmdir)に/sオプションを付けて実行
名前の変更 ren(rename)
ファイル/フォルダの移動 move
ファイルのコピー 一番基本的なファイルのコピーコマンドはcopy。ただしこのコマンドではフォルダはコピーできない
フォルダやファイルをまとめてコピー xcopyかrobocopy。xcopyが基本のコピーコマンド。robocopyは非常に多機能な、主にフォルダのバックアップに使うためのコマンド
ファイルの属性の確認と変更 attrib/cacls/icacls/subinacl
テキストデータから文字列を検索する find/findstr。findが基本的な文字列検索コマンド、findstrは正規表現が使える検索コマンド
ファイル内容の比較 fc/comp。fcは相違点を表示するが、compは同じかそうでないかを判断するだけ(相違点を表示しない)
テキストデータのソート sort
環境変数の設定/表示 set
画面のクリア cls
ファイル内容の表示(テキストのみ) type。注:バイナリファイルを表示させると画面が乱れたり、止められなくなったりするので注意
ページャ(表示を1ページずつ止めて表示させるコマンド) more
クリップボードへのコピー clip
クリップボードからの貼り付け 特になし。ただしマウスを右クリックすると、クリップボードの内容がコマンドプロンプト画面へ入力される
文字列の表示 echo
日付の表示/設定 date
時刻の表示/設定 time
OSバージョン番号の表示 ver
主なCUI操作とそのために利用できるコマンド

コマンド利用の実際

 カレントフォルダを変更するcdコマンドは、少々説明が長くなるので、あとで詳しく説明するとして、まずはこの表から、基本的なコマンドをいくつかピックアップして、コマンド利用の感覚を掴んでもらうとしよう。

新しいフォルダを作成するmdコマンド

 新しいフォルダを作成するにはmd(mkdir)コマンドを使って「md \temp」のようにする。「md C:\temp\work\prj」のようにして、\tempと\temp\workと\temp\work\prjという複数のフォルダ階層を一気に作成することもできる。

新しいフォルダを作成するmdコマンド 新しいフォルダを作成するmdコマンド

ファイルを削除するdelコマンド

 ファイルを削除するにはdel(もしくはerase。どちらも同じ)コマンドを利用する(delではフォルダは削除できない)。例えば「del *.txt」のようにする。ただしエクスプローラの削除機能と違って、ごみ箱へも移動されずに、すぐに削除されてしまうので注意が必要だ。削除されたファイルを後で戻すことはできない(Windows OSのファイル履歴などの機能で戻すしかない)。

ファイルを削除するdelコマンド ファイルを削除するdelコマンド

 delのパラメーターとしてフォルダ名を指定すると、フォルダではなく、その中にあるファイルを全部削除しようとする(末尾に「\*.*」を付けた、「del temp\*.*」と同じ状態になる)。実際には、実行前に確認メッセージが表示されるのですぐには削除されないが(「Y」と入力すると実際に削除される)、注意する。

フォルダを削除するrdコマンド

 フォルダを削除するにはrdコマンドを利用して、「rd \temp」のようにする。

フォルダを削除するrdコマンド フォルダを削除するrdコマンド

 深いフォルダ階層のパスを指定しても、削除されるのは一番下位にあるフォルダのみである。例えば「md C:\temp\work\prj」の実行後に「rd C:\temp\work\prj」を実行すると、tempもworkも残ったまま、prjのみが削除される。

 フォルダが空でなく、その中に何らかのファイルやフォルダが存在する場合はエラーになる。そんな場合は、中のファイルやフォルダをいちいち全部削除してからrdを実行してもよいが、通常は次の/sオプション付きのrdコマンドを使うと簡単にまとめて削除できる。

サブフォルダごとファイルを削除するならrd /sコマンド

 ある特定のフォルダ以下のフォルダやファイルをまとめて全部削除するには、rdに/sオプションを付けて「rd /s \temp」のようにする。ファイルを削除するdelコマンドでは、フォルダ階層ごと削除することはできない。

サブフォルダごと削除するrd /sコマンド サブフォルダごと削除するrd /sコマンド

 このコマンドを実行すると、実行の前に確認メッセージが表示される。「Y」と入力すると実際に削除される。

 ちなみに、カレントフォルダ自身を「rd /s .」で削除することはできない。カレントフォルダを1つ以上、上のフォルダへ移動してから削除する必要がある。だがこれを利用して、「rmdir /s .」とすると(確認のための「Y」の入力は必要)、カレントフォルダ以下にあるファイルやフォルダを全てまとめて削除することができる(「.」だけは削除できずに残るため)。

ファイル名を変更するrenコマンド

 ファイル名を変更するには、ren(rename)コマンドを利用する。このコマンドには、2通りの使い方がある。

 単一ファイルの名前を変更するには、変更前と変更後の名前を並べて「ren file1.txt mydocument.text」のようにする。

ファイル名を変更するrenコマンド ファイル名を変更するrenコマンド

 もう1つの使い方として、ワイルドカードを使った名前変更がある。例えば「ren *.txt *.text」とすると、*.txtに該当する全ファイルの拡張子が.txtから.textに変更される。

ワイルドカードを使って名前を変更する ワイルドカードを使って名前を変更する

 ただしこの場合は少し注意が必要である。renに続く2つの名前指定のうち、最初のものは名前変更の対象となるファイルを表す。ワイルドカードを使うと複数のファイルが対象になる。

 2つ目の名前は、変更後の名前を表すが、ここに「\」を含むパス指定は使えない(名前を変更しながら、別の場所へ移動することはできない、ということ)。ここにワイルドカードを使うと、「*」や「?」の部分には、元のファイル名中の文字が、そのまま維持される。

 そのため、あまり複雑な名前変更はできず、例えば「photo*.jpg」を「旅行写真*.*」に変更するといったことはできない(「photo」の部分を「旅行写真」にすることはできないということ。5文字から4文字に短くしようとしているため。変更の前後で文字数が同じなら実行できる)。これを行いたければ、以下のTIPSのようにPowerShellなどを使う必要ある。

ファイル/フォルダを移動するmoveコマンド

 ファイルやフォルダを別の場所へ移動させたいなら、moveコマンドを利用する。エクスプローラでいえば、ファイルやフォルダを選択して[Ctrl]+[X]でカットして、[Ctrl]+[V]で別の場所へ張り付けて移動させることに相当する。

ファイルやフォルダを移動するmoveコマンド ファイルやフォルダを移動するmoveコマンド

ファイルをコピーするためのコマンド

 ファイルをコピーするコマンドはいくつかある。

●ファイルをコピーするcopyコマンド

 ファイルをコピーするならcopyコマンドが一番基本的なコマンドである。だがcopyではファイルしかコピーできず、フォルダはコピーできない。

 コピーの第1引数にはコピー元のファイル名、第2引数にはコピー先を指定する。コピー元としてワイルドカードを使うと複数のファイルが対象になるが、この場合はコピー先としてはフォルダ名かドライブ名だけを指定する。コピー元にフォルダを指定すると、末尾に「\*.*」が補われたものとして扱われる(例「copy . temp」→「copy .\*.* temp」)。

ファイルをコピーするcopyコマンド ファイルをコピーするcopyコマンド

●フォルダ階層ごとコピーするxcopyコマンド

 フォルダのツリー階層ごとコピーしたい場合はxcopyコマンドに/sオプションを付けて実行する(/sがないと、通常のcopyと同じ)。

フォルダ階層ごとコピーするxcopyコマンド フォルダ階層ごとコピーするxcopy /sコマンド

 なお/sオプションでは空フォルダ(中に何もないフォルダ)はコピーしない。多くの場合は、空フォルダもコピーさせる(空のフォルダも作成させる)ために、「/e」オプションも付けて使うことが多い。

 このコマンドには多くのオプションがあるので、詳しくは以下の記事を参照していただきたい。

●フォルダのコピー/バックアップ用の高機能なrobocopyコマンド

 robocopyは、xcopyよりも高機能なコピーコマンドである。フォルダツリーを丸ごとコピーしたり、エラー時にリトライしたり、コピーしたファイルのログ(記録)を取ったりできるなど、主にファイルやシステム情報などのバックアップ用に作られている。ただしフォルダごとコピーするのに向くコマンドであり、そうでない用途には(一般的なコピーには)copyやxcopyの方がが向いている。

 例えば拡張子.txtのファイルだけをあるフォルダから別のフォルダにコピーしたければ次のようにする。

フォルダのコピー/バックアップに向くrobocopyコマンド フォルダのコピー/バックアップに向くrobocopyコマンド

 これはごく一例で、robocopyコマンドにはさまざまな機能がある。ちょっと複雑なバックアップ用途なら、このコマンドを活用するのが早道だ。詳しくは次の記事を参照していただきたい。

他のコマンド

 これ以外にも多数のコマンドがあるが詳細は省略する。以下の記事も参照していただきたい。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。