![「Windowsの操作が簡単になるコマンドプロンプトの基本【導入編】」イメージ画像](https://www.pc-koubou.jp/magazine/wp-content/uploads/2018/01/command-prompt-basic_main3.jpg)
![「Windowsの操作が簡単になるコマンドプロンプトの基本【導入編】」イメージ画像](https://www.pc-koubou.jp/magazine/wp-content/uploads/2018/01/command-prompt-basic_main3-480x320.jpg)
今のPCはほとんどマウスでの操作なので、ほとんどの人は、あの黒い画面で文字だらけの「コマンドプロンプト」を触ったことがないかもしれません。「CUIの操作は何だか難しそう…」と思うかもしれませんが、知っているとより簡単にWindowsが操作できることがあります。ここではコマンドプロンプトの基本から、知っておくと便利なコマンドを紹介します。
そもそもコマンドプロンプトってなに?
コマンドプロンプトは、マウス中心の現在のグラフィカルなWindowsの前身OSである「MS-DOS」を操作するためのシェルです。シェルというのは、OS本体とユーザーを仲立ちする基本的なプログラムで、シェルがなければOSを操作することはできません。
MS-DOSのコマンドプロンプトはCUI (キャラクター・ユーザー・インターフェース) が基本で、ユーザーはコマンドプロンプトに対し、コマンドという文字列を入力することでOSに命令を行い、その結果も文字列としてコマンドプロンプトに表示されます。
現在のWindowsではコマンドプロンプトに代わってエクスプローラーがシェルとなっています。エクスプローラーというとファイル操作のアプリケーションだと思っている人が多いと思いますが、実際はファイル操作だけでなくデスクトップ環境を含めたインターフェース全般を司っています。エクスプローラーシェルではGUI (グラフィカル・ユーザー・インターフェース) によりマウスを基本とした操作ができます。
CUIは、コマンドプロンプト(画面左)など、文字だけでWindowsを操作するものを指し、GUIはエクスプローラ(画面右)やその他の大半のソフトウェアのようにマウスなどを用いて人間が直感的に操作できるものを指す
今でこそWindowsの操作はエクスプローラーがほとんどですが、実はコマンドプロンプトもひっそりと残されています。当初はMS-DOSとの互換性を確保するために残されていたものですが、今では互換性を必要とする場面はほとんどありませんし、コマンドプロンプトですべての操作ができるわけではありません。それでもコマンドプロンプトを使うと便利な場面がありますので、コマンドプロンプトが残っているのはうれしいことです。
なおWindowsのバージョンによって、コマンドプロンプトの機能、使えるコマンドやオプションなどに若干の違いがありますが、ここではWindows 10のコマンドプロンプトについて解説します。
コマンドプロンプトの起動方法
コマンドプロンプトの起動は、[スタート] ボタンから [Windowシステムツール]、[コマンドプロンプト] の順にクリックします。コマンドプロンプトをよく使うのであれば、[コマンドプロンプト] を右クリックして [スタートにピン留めする] 、または [その他] から [タスクバーにピン留めする] を行っておけば、以後は簡単に起動できるようになります。
コマンドプロンプトをよく使うのであればスタート画面のタイルに登録しておくと便利だ
[コマンドプロンプト] をクリックするとコマンドプロンプトが起動します。なお、コマンドによっては実行に管理者権限が必要な場合があります。その場合は、[コマンドプロンプト] を右クリックして [その他]、[管理者として実行] をクリックすれば管理者権限のコマンドプロンプトが起動しますので、それで対処することができます。
通常のコマンドプロンプトの起動画面
管理者として起動した場合のコマンドプロンプト
コマンドプロンプトの画面はカスタマイズできます。まず上記のコマンドプロンプト画面の左上にあるアイコンをクリックすると、システムメニューが現れます。その中から [プロパティ] をクリックすると [“コマンドプロンプト”のプロパティ] が表示されますので、お好きなようにカスタマイズしてください。ここでは以下の画面が見やすくなるように [画面の色] タブから画面の文字を黒色に、画面の背景を白色に変更しました。
[“コマンドプロンプト”のプロパティ] で画面の色を変更する
画面の文字を黒、画面の背景を白に変更したコマンドプロンプト画面
コマンドプロンプトを使ってみる
まずはコマンドプロンプトにキーボードから「dir」と入力してEnterキーを押してみてください(注:「 」は入力不要です。以下同様)
コマンドプロンプトに「dir」と入力しEnterキーを押す
この操作では、ログインしているユーザーのユーザーディレクトリ(フォルダ) にあるファイル/フォルダが表示されます。「dir」というのはカレント(現在いる所の) ディレクトリ (フォルダ) の内容を表示するコマンドです。なお、表示される内容はお使いの環境によって異なります。
別の場所のファイル/フォルダを表示したい場合は「dir c:\」のようにdirコマンド後に半角スペースを入れて引数として表示したいドライブやフォルダを指定します。
「dir c:\」の結果
別の場所のファイル/フォルダを表示したい場合は「dir c:\」のようにdirコマンド後に半角スペースを入れて引数として表示したいドライブやフォルダを指定します。
「dir c:\ /s /p」の結果
「/b」オプションを指定するとファイル名だけを表示することができます。dirコマンドには他にも多くのオプションがあります。「/?」オプションを指定するとオプションの一覧が表示されます。「/?」オプションは多くのコマンドで有効なオプションですので、コマンドの使い方がわからないときは「/?」オプションを使ってください。これは「Help」の文字に半角スペースを入れて「dir」と指定しても同様な画面が表示されます。単に「help」とだけ入力すると代表的なコマンドの一覧が表示されます。
コマンドプロンプトでのコマンドの実行結果は基本的に画面に表示されますが、リダイレクトを使うとファイルに保存することもできます。「dir c:\ /s > c:\users\owner\filelist.txt」のようにリダイレクト記号「>」の後にファイル名を指定してやると「dir c:\ /s」の結果がc:\users\ownerフォルダのfilelist.txtというファイルに書き込まれます。画面表示が長すぎて見づらい場合はリダイレクトが便利です。これと同じことをGUI画面でやるのは困難ですが、コマンドプロンプトを使えば簡単です。
「dir c:\ /s > c:\users\owner \filelist.txt」コマンドでファイルにリダイレクトされた内容をメモ帳で見る
覚えておくと便利なコマンド―その1:「treeコマンド」
「dir /s」コマンドの結果はいろいろな情報がありすぎて見やすくありませんが、「tree」コマンドに「/f」オプションを指定するとファイル名とフォルダ名だけをツリー構造で見やすく表示できます。引数として表示したいフォルダが指定できます。「/f」オプションを指定しない場合はフォルダ名だけをツリー構造で表示します。なお画面で罫線が文字に重なっていますが、これはWindows 10のバグです。
「tree c:\ /f」コマンドの結果 (一部)
「tree」コマンドでもリダイレクトができます。なお、リダイレクト記号の「>」を使うと同名ファイルがすでにある場合は上書きされます。上書きでなく追加したい場合は「>>」を使います。「tree」コマンドの結果をファイルに保存すれば、ディスク上のフォルダ/ファイルのリストが簡単に作れますので非常に便利なコマンドです。ファイルにリダイレクトされた場合は罫線と文字が重なりません。
「tree c:\ /f > c:\users\owner\filelist」コマンドでファイルにリダイレクトされた内容をメモ帳で見る
覚えておくと便利なコマンド―その2「mdコマンド」
「mkdir」コマンドはフォルダを作成するコマンドです。「md」と省略形で入力してもかまいません。ここでは「md」コマンドとして説明します。単にフォルダを作成するだけであれば、エクスプローラーから [新規作成]、[フォルダー] で作成することができますので、コマンドプロンプトから作成することが便利とは言えませんが、次のような場合はどうでしょうか。
仮にCドライブのルートにAというフォルダを作りたいとします。さらにAフォルダの中にBというサブフォルダを作成し、さらにBフォルダの中にCというサブフォルダを作成、さらにCフォルダの中にDというサブフォルダを作成したいとします。つまり\A\B\C\Dという階層のフォルダを作りたい場合です。
エクスプローラーでこれをやるには、①ルートにAフォルダを作成します。②Aフォルダの中にBフォルダを作成します。③Bフォルダの中にCフォルダを作成します。④Cフォルダの中にDフォルダを作成します。このように4回フォルダの作成を行う必要があります。
一方、コマンドプロンプトで「md」コマンドを使えば、「md c:\A\B\C\D」と入力すれば一発で4回分のフォルダ作成ができてしまいます。4階層以上のさらに深いフォルダ構成なら「md」コマンドの便利さはさらにはっきりします。
「md c:\A\B\C\D」コマンドで階層フォルダを作成し、「tree c:\A」コマンドで作成されたことを確認
覚えておくと便利なコマンド―その3 「formatコマンド」と「cipherコマンド」
「format」コマンドはディスクをフォーマットするコマンドです。単にフォーマットするだけなら、エクスプローラーでドライブを右クリックして [フォーマット] を実行できますので、コマンドプロンプトが便利というわけではありません。
しかし、通常のフォーマットではディスク上のデータは完全に消えるのはなく、見えないようになっているだけですので、レスキューソフトなど使えばデータの復元ができてしまいます。ディスクを友人に譲るとか処分する場合は、大事な個人情報などが漏れてしまう危険があります。
そこで、「format」コマンドに「/p:n」オプションを追加して実行するとディスク上のデータ領域がすべて0で上書きされた後、nの回数だけ毎回異なる乱数で上書きされますので、データが完全に消去され、レスキューソフトを使っても復元が困難となります。このオプションの「n」は数字を指定します。この数字の回数だけ乱数でデータ領域が上書きされます。nが大きいほど確実に消去できますが、その代わりにフォーマットに時間がかかります。
「format i: /p:1」コマンドの実行画面
同様な機能を持ったコマンドに「cipher」コマンドがあります。「cipher」コマンドは、本来はフォルダ/ファイルの暗号化を表示・変更するコマンドですが、「/w:drive」オプションを指定すると、driveで指定したドライブの空き領域を、乱数などで3回上書きして消去されたデータを完全に抹消します。ただしこのコマンドはNTFS専用であり、ディスク上にある有効なデータは上書きされず、そのまま残ります。現在あるデータは消去しないので注意してください。
「cipher /w:i:」コマンドの実行画面
「diskpart」コマンドでも同じようにデータの消去が可能ですが、このコマンドは使い方が結構面倒ですので説明は省略します。「diskpart」コマンドは管理者としての起動が必要なコマンドです。
ワイルドカードを使って一括操作
コマンドプロンプトを活用する際に役立つのが「ワイルドカード」で、多くのコマンドで引数にワイルドカードが利用できます。ワイルドカードは任意の文字を表す特殊な文字のことです。Windowsで使えるワイルドカードには「?」と「*」があります。「?」は任意の1文字を表します (0文字も可)、「*」は任意の文字列 (0文字以上) を表します。
ワイルドカード「?」を試してみる
例えばマイドキュメントに「test」というフォルダ(C:\Users\testuser\Documents\test)があり、そのフォルダ内に下図のようなファイル群が格納されているとします。
フォルダに色々なファイルがある場合
これらのファイルの中から「file1.txt」から「file9.txt」の数字の部分だけが違う9つのファイルを「C:\Users\testuser\Documents\temp」フォルダに移動したい場合、コマンドプロンプトで操作するには、次のコマンドを実行します。
move file?.txt ..\temp
このコマンドを実行した結果は下図のようになります。
「move file?.txt ..\temp」コマンドを実行した結果
「move」コマンドはファイルを移動するコマンドで、引数として対象ファイル(ここでは「file?.txt」)と移動先フォルダ(ここでは「..\temp」)を指定します。コマンドと対象ファイル、それに移動先フォルダの間には半角の空白を入れます(以下同様)。この例では対象ファイルに「?」というワイルドカードを使っています。「?」は任意の文字を表すので、「file?」は「file1」「file2」から「file9」まですべてと一致することになります。
また現在のカレントディレクトリ(フォルダ)にある対象ファイルを指定していますので、ワイルドカードを含むファイル名だけを指定していますが、別のフォルダにあるファイルを指定するときは、パス (ファイルのあるドライブの最初からのフォルダ名:この場合はC:\Users\testuser\Documents\test) を付けて「C:\Users\testuser\Documents\test\file?.txt」のように指定することもできます。「\」はフォルダの区切りを示す記号です。
移動先として「..\temp」という指定を行っていますが、この「..」は親のフォルダを意味する記号です。つまり親フォルダである「C:\Users\testuser\Documents」の下の「temp」フォルダという意味で、「C:\Users\testuser\Documents\temp」と指定しても同じです。
ワイルドカード「*」を試してみる
ファイルを移動した結果、元のフォルダには下図のようなファイルが残っています。次に、「abcd.dat」、「abcd.doc」、「abcd.txt」、「abcd01.dat」、「abcde.dat」、「abcde01.dat」の6ファイルを「C:\Users\testuser\Documents\temp1」フォルダにコピーすることにします。この場合のコマンドは次の通りです。
copy abcd*.* ..\temp1
結果は下図のようになります。
「copy abcd*.* ..\temp1」コマンドを実行した結果
「*」は任意の文字列を表し、1文字以上も表せるので、「abcd」からファイル名が始まるファイルすべてがコピーされました。
このように、「?」や「*」ワイルドカードを使えばいろいろな指定方法が可能です。「A??d?1.dat」と指定すれば「abcd01.dat」と「ahcd11.dat」が対象になりますし、「*.*」と指定すればすべてのファイルが対象になります。
この例ではファイルの数が少ないため、エクスプローラーでも比較的簡単に対象ファイルを選択することができますが、ファイルの数が数百・数千になるとエクスプローラーで選択するのは大変です。そうした場合に、コマンドプロンプトを使うと簡単に選択でき、ファイル操作が大幅に省力化できます。
フォルダ構造をつけてコピーする「xcopy」コマンド
コマンドによっては複数のフォルダにあるファイルを対象にできるものもあります。例えば
xcopy c:\*.doc? e:\ /s
上記のコマンドを実行すると、Cドライブ上にある拡張子が.docまたは.docxといったすべてのWord文書をEドライブにフォルダ構造を付けた形でコピーします。「xcopy」は高機能なコピーコマンドで、「/s」というオプションを付けると指定したフォルダ (この場合はc:\) 以下のすべてのフォルダから「*.doc?」ファイルを検索して、フォルダツリーを生かした形でコピーします。結果は下図のようになります。
「xcopy c:\*.doc? e:\ /s」を実行した結果
また結果を「tree」コマンドで確認したものが下図です。
「xcopy c:\*.doc? e:\ /s」コマンドの結果をtreeコマンドで見る
ファイルを削除する「del」コマンド
ファイルを削除する「del」コマンドも複数のフォルダにあるファイルを対象にできます。
del c:\*.tmp /s
上記のコマンドを実行すると、Cドライブ上のすべての「.tmp」拡張子を持つファイル(テンポラリファイル)を削除します。テンポラリファイルはディスク上に残しておいても無駄に容量を消費するだけですので、定期的にこのコマンドを実行してディスクを清掃しておくのも1つの手段です。「del」コマンドの場合も「/s」オプションを付けることで、指定フォルダ以下のすべてのフォルダを対象にできます。
「del c:\*.tmp /s」を実行した結果
バッチファイルを使って複数のコマンド一括操作
バッチファイルというのは、複数のコマンドを1行に1つずつ記述したテキストファイルで、拡張子を「.bat」または「.cmd」としたものを言います。コマンドはコマンドプロンプトで利用できるコマンドならすべて記述可能です。また、バッチファイルだけで利用できる特別なコマンドもあります。
バッチファイルが実行されると、最初の行から順番に記述されたコマンドを実行していきます。従って、コマンドプロンプトで複数のコマンドをその都度、入力・実行しなくても、1度バッチファイルを実行すれば、後はシステムが各コマンドを自動的に実行してくれます。毎回同じコマンド群を実行するような定型処理をバッチファイルに記述しておけば、大幅に手間が省けます。
バッチファイルの作成は広い意味ではプログラミングではありますが、記述するのはコマンドだけですので、難しいプログラミング言語を覚えることはありません。誰にでも作成できます。
例えばユーザーデータをバックアップするバッチファイルとして、下図のようなテキストファイルを作成し、「backup.cmd」という名前で保存します。
ユーザーデータをバックアップするバッチファイルの例
このバッチファイルをダブルクリックして実行すると、Eドライブの「backup」フォルダ配下にフォルダ構造を生かした形で、デスクトップ、ドキュメント、ピクチャ、ビデオ、ミュージック、アドレス帳、お気に入りの各データをバックアップすることができます。これらのデータを1つひとつバックアップするのは相当な手間ですが、バッチファイルを1度作っておけば、後はバッチファイルを実行するだけですべてのバックアップが完了します。
なお上の図にある「/r」オプションはコピー先に読み取り専用の同名ファイルがあった場合でも上書きする指定で、「/y」オプションは上書きする際に確認メッセージを表示しないという指定です。「/y」オプションがないと上書きの際に、その都度確認メッセージが表示されてバッチファイルの実行が止まってしまい実用的ではありません。
ここでは指定していませんが、コピー先に同名ファイルがあって、なおかつコピー元の方が新しいファイルだけを上書きコピーしたい場合は「/d」オプションを付けます。これもよく使うオプションです。
さらに高機能な「robocopy」コマンド
上のバッチファイルは必要最低限の簡単なものですが、もう少し便利なものに変えてみましょう。それが下の図です。
変更したバッチファイル
このバッチファイルでは、「xcopy」コマンドの代わりに「robocopy」コマンドを使っています。「robocopy」コマンドは「xcopy」コマンドよりも高機能で高速なコピーコマンドです。
「robocopy」は機能が充実しており、ここだけでは説明がしきれませんが、「/mir」オプションでコピー元とコピー先を全く同じに同期 (ミラー) したり、「mov」オプションでファイルを移動したり、「/rh」オプションで指定した時間に実行するように指定したりできます。「xcopy」や「robocopy」の詳細なオプションは「xcopy /?」、「robocopy /?」でヘルプを表示してください。
上の図の例を見てみましょう。上記の「robocopy」コマンドで指定している「/s」オプションは「xcopy」と同様にサブフォルダを含めてコピーします。「/purge」オプションはコピー元に存在しないコピー先のファイルやフォルダを削除します。「xo」オプションは「xcopy」の「/d」オプションと同様に、コピー先のファイルが新しい場合は上書きしません。こうすることで、コピー元とコピー先のフォルダが常に同じ状態を維持できます。
実は、ここでやっているバックアップだけでは「robocopy」コマンドを使う必要もありませんので、「xcopy」コマンドでも構いません。「robocopy」コマンドでもできるという例として見てください。
Windowsをシャットダウンする「Shutdown」コマンド
上のバッチファイルでは、最後の行に「shutdown -s -t 0」を加えています。「shutdown」はWindowsをシャットダウンまたはログオフ、休止するコマンドです。「-s」オプションでシャットダウンを指定していますが、ログオフなら「-l」、休止なら「-h」オプションを指定します。「-t 0」オプションは今すぐ実行する指定で、「-t xxx」と指定するとxxx秒後に実行します。
このバッチファイルを実行すると、ユーザーデータをバックアップした後、自動的にシャットダウンしますので、1日の作業終了後のこのバッチファイルを実行すれば、データをバックアップし、勝手にシャットダウンしてくれます。
このバッチファイルだけでも十分に実用的ですが、バッチファイルの実行時にコマンドプロンプトの画面が表示されるのが煩わしいかもしれません。残念ながらバッチファイルだけで、コマンドプロンプトの画面を表示しないようにするのは難しいのですが、下図のようなVBスクリプトを使えば、コマンドプロンプトの画面を表示しないようにすることができます。
「backup.cmd」を最小化して実行するためのVBスクリプト
このVBスクリプトを「backup.vbs」というような名前で、「backup.cmd」と同じフォルダに保存します。「backup.cmd」を実行する代わりに、「backup.vbs」をダブルクリックして実行すれば、コマンドプロンプトの画面が表示されることなく、バックアップとシャットダウンが自動実行されます。また「backup.vbs」のショートカットをスタートメニューあるいはデスクトップに置いておけばすぐに実行できます。
バックアップしたいデータやバックアップ先に関しては、お使いの環境に合わせて適宜変更してください。
このように、コマンドプロンプトでは、大量のファイルを同時に操作する際にも最適で、バッチファイルで複数のコマンドを一括して行うこともできるので、その応用範囲はとても広いです。業務用途でも個人用途でも、多くのシーンで役立つので、ぜひ覚えてみてはいかがでしょうか。
[ネクスマグ] 編集部
パソコンでできるこんなことやあんなこと、便利な使い方など、様々なパソコン活用方法が「わかる!」「みつかる!」記事を書いています。