Windows 10対応:これだけは覚えておきたいWindowsのコマンドプロンプトの使い方:Tech TIPS
GUIによる操作が当たり前のこの時代でも、Windows OSの管理にコマンドプロンプトはまだまだ欠かせない。コマンドプロンプト上でコマンドを実行することで作業が大幅に楽になることがあるからだ。そこでコマンドプロンプトの基本的な使い方を解説する。
対象OS:Windows 7/Windows 8/Windows 8.1/Windows 10/Windows Server 2008 R2/Windows Server 2012/Windows Server 2012 R2/Windows Server 2016
GUIが主流のこの時代でも、CUIの「コマンドプロンプト」が活躍する場面は多い。例えば、システム管理などでは各種の設定ファイルの内容をチェックしたり、簡単な編集作業を行ったりする必要がある。その際、いちいちエクスプローラーやメモ帳などを使って編集するよりは、コマンドプロンプト上で操作した方が手っ取り早い。
またネットワーク関連のトラブルシューティングでは、コマンドプロンプト上でネットワークツールを使う場面が多いので、コマンドプロンプトを避けて通るわけにはいかない。
そこで本TIPSでは、コマンドプロンプトに慣れていないユーザーを対象に、その使い方について簡単にまとめておく。パスやカレントドライブ、カレントフォルダ、ワイルドカードといった基本的用語、各コマンドの説明や使用例、バッチの基本などについては、次の記事やコマンドプロンプトのヘルプ(後述)なども参照していただきたい。
- 「コマンドプロンプトとは」(超入門コマンドプロンプト)
- 「ファイルシステムの基礎と基本的なコマンドの使い方」(超入門コマンドプロンプト)
- 「バッチコマンドで定型処理を行う」(超入門コマンドプロンプト)
- TIPS「【総まとめ】Windowsコマンドプロンプトの入門から使いこなしまでの記事」
- 「Windows 2000 コマンドライン徹底活用」
なおWindows 10では、Linuxのコマンドがそのまま使える「WSL(Windows Subsystem for Linux)」も利用できるので、コマンドプロンプトの機能が不足していると感じられる場合は、WSLも利用するとよいだろう。
また、「コマンドプロンプト」の編集や履歴機能が不足していて使いづらいと考えるなら、「Cmder」のような高機能な代替コンソールを利用する方法もあるので、必要に応じて利用するとよいだろう。
記事内目次
- コマンドプロンプトの起動設定
- コマンドプロンプトをタスクバーにピン留めする
- コマンドプロンプトを管理者権限で起動する
- コマンドプロンプトのコンソール設定の変更
- コンソール画面のレイアウトの設定
- コマンドライン履歴の編集
- ファイル/フォルダ名の入力と補完機能
- コマンドプロンプトのヘルプ
- ファイルの一覧を取得するdirコマンド
- 画面を消去するclsコマンド
- カレントフォルダを移動するcd/pushd/popdコマンド
- ファイルの内容を表示するtype/moreコマンド
- ファイルの編集/プログラムの起動
- コマンド用のPATHを追加する
- コマンドプロンプトの開始時に特定のコマンドを実行させる
- フォルダを作成する
- ファイルやフォルダを削除する
- ファイルをコピーする
- ファイルの名前を変更したり移動したりする
- ファイルの属性やセキュリティを設定・確認する
- 文字列を検索する
- テキストをソート/比較する
- ファイルに対して繰り返し処理する
- 日本語環境と英語環境を切り替える(文字コード/コードページの変更)
- ディスクを管理する
- プロセス管理
- シンボリックリンクやマウント/ジャンクションポイントの管理
- レジストリを操作する
- ネットワーク関係のコマンド
コマンドプロンプトの起動設定
「コマンドプロンプト」(ファイル名はcmd.exe)の起動方法は幾つかある(TIPS「Windows 10でコマンドプロンプトを素早く起動する方法」も参照)。
- [スタート]メニューの[Windowsシステム]−[コマンドプロンプト]
- [スタート]メニューの[アクセサリ]−[コマンドプロンプト](Windows 7の場合)
- [Windows]+[R]で[ファイル名を指定して実行]ダイアログを開き、「cmd」と入力
- 検索窓に「cmd」や「コマンド」と入力して検索
- [スタート]ボタンを右クリックして([Windows]+[X]キーでも可)、クイックアクセスメニューから[コマンド プロンプト]を実行(Windows 8/Windows Server 2012以降の場合)
最後の方法の場合、Windows OSのバージョンによってはここに[PowerShell]が表示されていることがある。その場合は、次の方法で[コマンドプロンプト]に変更できる。
コマンドプロンプトの起動(Windows 8/Windows Server 2012以降)
Windows 8/Windows Server 2012以降なら、デスクトップの画面左下にあるスタートアイコンを右クリックして表示されるクイックアクセスメニューから起動できる。OSによってはここにPowerShellと表示されていることがあるが、[設定]アプリで変更できる。
コマンドプロンプトをタスクバーにピン留めする
いったんコマンドプロンプトが起動したら、タスクバーにアイコンを登録/ピン留めしておくと、以後は簡単に起動できるようになる。
コマンドプロンプトを管理者権限で起動する
管理用コマンドを利用する場合、アクセス権の関係で、最初から「管理者権限」でコマンドプロンプトを起動しておかなければならないことがある。これには幾つか方法がある。
一番基本的なのは、スタートメニューやタスクバー上の「コマンド プロンプト」アイコンを右クリックし、ポップアップメニューから[管理者として実行]を選択する方法だ。
コマンドプロンプトを管理者権限で起動する
管理者権限が必要なコマンドを実行する場合は、最初からコマンドプロンプトを管理者権限で起動しておく。さもないと、コマンドが「エラー: このコマンドを実行するのに正しいアクセス許可がありません。〜」「〜ユーティリティを実行するためには管理者権限が必要です。」などのメッセージを表示して、実行できないことがある。コマンドプロンプトのアイコンを右クリックして、ポップアップメニューから[管理者として実行]を選択する。
もしタスクバー上にコマンドプロンプトのアイコンを登録しているなら、[Ctrl]と[Shift]キーを押しながら、タスクバー上のコマンドプロンプトアイコンをクリックしてもよい。
この方法は、タスクバー上にある(コマンドプロンプト以外の)プログラムを管理者権限で起動させる場合にも利用できる。
コマンドプロンプトのコンソール設定の変更
コマンドプロンプトを起動してもデフォルトでは狭い画面しか表示されず、見づらいので設定を変更しておくとよい。
このためには、コマンドプロンプトのシステムメニュー(コマンドプロンプトウィンドウの左上に表示されているアイコンをクリックすると表示されるメニュー)から[プロパティ]を選び([Alt]+[Space]を押してから[P]キーの方が早いので、これも覚えておくとよい)、プロパティ画面を表示させる。
起動中のコマンドプロンプトではなく、今後起動するコマンドプロンプトのデフォルト設定を変更したい場合は、メニューやタスクバー上のコマンドプロンプトのアイコンを右クリックし、ポップアップメニューから[プロパティ]を選んでもよい。
コマンドプロンプトのプロパティ画面を開いたら、次の設定を変更する。
主な項目の意味は次の通りである。
■バッファーサイズ
コマンド履歴の最大サイズの指定。一度入力したコマンド文字列は、このバッファーサイズの数だけ履歴として保存される。履歴は、後述するように[F7]キーなどで参照できる。同じコマンドを繰り返して実行する場合に役に立つ。デフォルトでは50コマンドまで履歴が保存されるが、最大で999コマンドまで拡大できる。通常は50コマンドでも十分だろう。
■バッファー数
コマンドプロンプトから別のコマンドプロンプトやプログラムを起動する場合、そのプログラムの中でも独立して履歴が保存される。コマンドプロンプトからさらに別のコマンドプロンプト(cmd)を呼び出す場合だけでなく、netshやdiskpart、PowerShellのようなテキスト入力を受け付けるプログラムを呼び出した場合でも、それらの中で入力した履歴が、それぞれのプログラムごとに保存される。また各プログラムをいったん終了させてからまた起動しても、その前の履歴が参照できる。だがこのバッファー数で指定したネスト(深さ)を超えると履歴は保存されない。デフォルトは4なので、5つ以上ネストさせた場合は履歴を利用できなくなる。
■重複する古い履歴を破棄
コマンド履歴中に、同じコマンド文字列を重複して保存しないようにするオプション。同じコマンドを繰り返し実行してもコマンド履歴が増えず、履歴管理が容易になる。
■簡易編集モード
オンにしておくと、コマンドプロンプトウィンドウ内のテキストをマウスのドラッグで操作できるようになる(OSによってはデフォルトでオン)。クリップボードへコピーしたい範囲をマウスで選択し(領域の左上でマウスをクリックし、そのまま選択範囲の右下までドラッグして、マウスボタンを離す)、そこでさらに右クリックするか[Enter]キーを押すと、選択された範囲がクリップボードにコピーされる。「貼り付け」は(何も選択されていない状態で)マウスを右クリックするだけでよい。
■挿入モード
これはデフォルトの編集モードを「上書き」ではなく「挿入」にするためのオプションである。以前入力したコマンドの一部を変えて再実行するということはよくあるので、オンにしておかないととても不便だ。
コンソール画面のレイアウトの設定
[レイアウト]タブではコマンドプロンプトのウィンドウサイズを変更する。コマンドプロンプトでは、通常のWindowsアプリケーションと違って、ユーザーが自由に画面サイズ(画面幅)を変えることができない。もともと画面幅が固定のコンソール画面(DOS画面)をエミュレートしているので、使用中に自由に画面サイズが変更されることを想定していないためだ。また使いやすくするためにも、最初からなるべく画面を広くしておくのがよいだろう。
コマンドプロンプトのサイズ(桁数と行数)はデフォルトでは80桁×25行(OSのバージョンによっては120桁×30行)となっているが、これでは狭すぎるだろうから、もっと大きくしておくとよい。それぞれの意味は次の通りである。
■画面バッファーの幅
これは仮想的なコンソール画面の幅を表す。以下の「ウィンドウの幅」を広げると自動的に連動するので、元のままでよい。
■画面バッファーの高さ
仮想的なコンソール画面の高さを表す。これを超えて出力されたテキストは切り捨てられ、上にスクロールしても見ることはできない。デフォルトでは300行だが(OSによっては9001行)、最大9999行まで増やすことができる。
なお次の記事で解説しているmodeコマンドを使うと、約3万2000行まで拡大できる。
■ウィンドウの幅
コマンドプロンプトウィンドウの物理的な表示幅(桁数)を表す。画面バッファーの幅よりも狭いと、全体を見るのに横スクロールが必要になる。
■ウィンドウの高さ
コマンドプロンプトウィンドウの物理的な表示行数を表す。
以上の設定変更が終了したら、[OK]をクリックして、設定を保存する。
コマンドライン履歴の編集
コマンドプロンプトでは、以前実行したプログラムを再度実行したり、少しパラメーターを変えて実行したりすることがよくある。こういう場合には幾つか便利な方法があるので覚えておくとよい。
[F3]キーを押すと直前のコマンドが再表示されるが、[↑]キーを押すとコマンド履歴を1つずつ順番に前へ戻ることができる([↓]キーで逆順)。また、例えば「dir」まで入力してから[F8]キーを押すと、「dir」で始まるコマンド履歴が順番に表示されるので、目的のコマンドラインが表示されるまで繰り返し[F8]キーを押せばよい。
[F7]キーを押すと履歴の一覧が表示されるので、[↑][↓]キーでコマンドを選んでから([F9]で履歴番号を指定して選ぶこともできる)、再編集したり、[Enter]キーを押して実行したりできる。
コマンドラインの編集時に利用できるキーを次にまとめておく。
キー/操作 | 意味 |
---|---|
[←] | カーソルを1文字左へ移動 |
[→] | カーソルを1文字右へ移動 |
[Ctrl]+[←] | カーソルを1単語分左へ移動 |
[Ctrl]+[→] | カーソルを1単語分右へ移動 |
[Home] | カーソルを行頭へ移動 |
[End] | カーソルを行末へ移動 |
[Insert] | 挿入モードと上書きモードの切り替え。モードでカーソルの大きさが変わる |
[Delete] | カーソル位置の1文字を削除 |
[Back Space] | カーソルの直前の1文字を削除 |
[Ctrl]+[Home] | 行頭からカーソルの直前までを全部削除 |
[Ctrl]+[End] | カーソル位置から行末までを全部削除 |
[Ctrl]+[C] | 入力をキャンセルして次行先頭へ移動 |
[F1] | 直前の履歴の内容を1文字だけコピー |
[F2]+1文字 | 直前の履歴から、指定した文字までコピー |
[F3] | 直前の履歴内容のコピー。何も入力していない状態で押すと直前の履歴を表示することになるが、行の途中で押すと、そこから行末までがコピーされる |
[F4]+1文字 | 直前の履歴から、指定した文字まで削除 |
[F5] | 1つ前の履歴へ移動 |
[F7] | コマンド履歴の番号とコマンドラインをポップアップ表示 |
[F8] | 入力した文字列にマッチする履歴へ移動。繰り返し押すとマッチするものを順次表示する |
[F9] | 指定した履歴番号へ移動。履歴番号は先に[F7]を押して確認する |
[↑] | 1つ前の履歴へ移動 |
[↓] | 1つ後の履歴へ移動 |
[Page Up] | 履歴リストの先頭へ移動 |
[Page Down] | 履歴リストの最後へ移動 |
[Alt]+[F7] | 履歴を全て削除 |
[Esc] | 入力を全てキャンセルして行をクリア |
[Enter] | コマンドの実行、選択範囲の確定 |
[Ctrl]+[F] | 検索 |
マウス左クリック | 選択開始点の指定 |
マウスのドラッグ | テキストの選択 |
マウス右クリック | テキストの貼り付け |
[Shift]+ドラッグやカーソル移動キー | 選択範囲の拡大/縮小 |
[Tab]/[Ctrl]+[I] | 補完 |
コマンドラインの編集機能 [F1]〜[F4]キーの挙動が分かりづらいが、これは(カーソル移動による編集もできなかった頃の)MS-DOS時代の名残である。 |
残念ながら、履歴はコマンドプロンプトを終了させると消えてしまう。UNIXやLinuxのシェルのように、以前の履歴をコマンドプロンプト起動時にロードさせる方法はない。
ところでこのコマンドラインの履歴機能はdoskeyによって実現されている。doskeyは、以前は独立したコマンドだったが、現在ではコマンドプロンプトに内包されている。このため、コマンド履歴の一覧をコピーしたり、バッチファイルなどにするためにテキストとして表示させたりしたければ、「doskey /h」か「doskey /history」を実行すればよい。
doskeyを使うと「マクロ」も定義できる。例えば「doskey ls=dir /a」とすると、以後「ls」と入力するだけでファイル名の一覧を表示できる。ただコマンドプロンプト起動時に自動ロードさせる標準的な手段が用意されていないなど、あまり使い勝手はよくない。詳細については「doskey /?」でヘルプを参照していただきたい。
ファイル/フォルダ名の入力と補完機能
コマンドを実行する場合には、そのパラメーターとしてファイル名やフォルダ名を指定する必要がある。だが古いMS-DOS時代の8.3形式のファイル名ならともかく、空白や記号、漢字などを含む長いファイル名をコマンドプロンプト上でいちいち手動により入力するのは非常に面倒である。こういう場合は、ファイル名やフォルダ名の「補完機能」を活用する。
補完機能とは、ファイル名の先頭の数文字を入力しただけで、残りの部分のファイル名が自動的に補われるという機能である。補完キー(デフォルトでは[Tab]キー)を押すと、カレントフォルダ内にある、該当するファイル名やフォルダ名が自動的に選択され入力される。候補が複数ある場合は、目的のものが表示されるまで補完キーを繰り返し押せばよい。
何も入力せずに補完キーを押すと、全てのファイルやフォルダが順番に表示される(ファイル名に空白が含まれる場合は、自動的に「 " 」で囲まれる)。
フォルダ名の場合は、最後に「\」を手動で入力して(パス名が「 " 」で終了していても、その後ろに「\」を追加してよい)、さらに補完キーを押せば、今度はそのフォルダ内の候補が順番に表示される。このようにして、深いフォルダにあるファイルでも簡単に指定できる。
ファイル名を指定するには、エクスプローラーによるドラッグ&ドロップという方法もある。エクスプローラーでファイルやフォルダを選択、ドラッグして、それをコマンドプロンプト上へドロップすると、そのフルパス名が自動的に貼り付けられる。TIPS「ファイルやフォルダのフルパス名を取得する」で紹介しているように、エクスプローラーで[Shift]キーを押しながら右クリックしてパス名を取得する方法もあるが、ドラッグ&ドロップする方が簡単である。
コマンドプロンプトのヘルプ
コマンドプロンプトで利用可能な主なコマンドとその使い方などは、helpコマンドで確認できる(一部、コマンドプロンプトの外部コマンドも表示される)。コマンド名が分かったら、次は例えば「help copy」もしくは「copy /?」のようにすると、より詳しい説明、使い方などが表示される。以下、幾つか主要なコマンドなどについて補足しておく。
ファイルの一覧を取得するdirコマンド
dirコマンドは最も多く使われるコマンドであろう(TIPS「Windowsのdirコマンドでファイル名の一覧を取得する」参照)。単に「dir」と入力すると、カレントフォルダ内にあるファイルやフォルダの一覧が表示される。
dirで覚えておきたいオプションとしては、次のものが挙げられる。
- ファイル名だけを表示させる「/b」
- 1画面ごとに停止させる「/p」
- 時間順にソートして表示する「/od」。新しいファイルが下の方に表示される。逆順にするには「/o-d」とする
- サイズ順にソートする「/os」(逆順は「/o-s」)
- 隠しファイルやシステムファイルを表示する「/ah」や「/as」
- 属性にかかわらず全てを表示させる「/a」
- フォルダ名だけを表示する「/ad」(ファイルだけなら「/a-d」)
- あるフォルダ以下を再帰的に全て表示する「/s」
これらのオプションは複数組み合わせてもよいし、「*」(複数文字にマッチ)や「?」(1文字にマッチ)というワイルドカード文字を使って、例えば「dir /p *.txt」とすると、ファイル拡張子が「.txt」である全てのファイル名を1画面ごとに止めて表示できる。「/p」を使った場合、次の1画面を表示するには何かキーを([Space]や[Enter]など)、途中で中断するには[Ctrl]+[C]をそれぞれ押す。
特に有用なオプションは「/s」である。「dir /s」とすると、カレントフォルダの下にあるフォルダを全て順番に表示する。グラフィカルなツリーで表示させたければtreeコマンドを利用できる。
また「dir /s *.cnf」のようにすると、*.cnfにマッチするファイルをカレントフォルダ以下から全て検索して表示するという、ファイル検索コマンドとして使用できる。さらに「/b」を付けると、ファイルのフルパス名のみが表示されるので、これをファイルにリダイレクトすれば該当するファイル名の一覧テキストができる(「dir /s *.cnf /b > file.txt」とする)。clipコマンドと組み合わせて(「dir /s *.cnf /b | clip」とする)、検索結果を直接クリップボードへコピーしてもよいだろう。
コマンドの出力結果のファイルへのリダイレクトや、次のコマンドへ渡すパイプ(|記号)などの使い方については、次の記事も参照のこと。
結果をファイルに新規書き込みするだけでなく、追加したり、アプリへファイルからデータを渡したりもできる。
画面を消去するclsコマンド
画面を全て消去するにはcls(clear screen)コマンドを実行する。
カレントフォルダを移動するcd/pushd/popdコマンド
カレントフォルダを変更するにはcd(もしくはchdir)コマンドを利用する。ただしcdコマンドはデフォルトではカレントドライブを変更しないので、例えばカレントドライブが「c:\Windows」のときに「cd d:\MyData」を実行しても、カレントドライブはc:のままである。
そこでcdコマンドに/dオプションを付けると(オプションはパス名よりも前に付けること)、カレントドライブの変更とカレントフォルダの変更を同時に行える。例えば「cd /d d:\MyData」とすると、カレントドライブがd:、カレントフォルダがd:\MyDataになる。
cdコマンドは、他のコマンドと違って、特別なパラメーター解釈が行われる。補完機能を使ってcdコマンドの引数を選択することもできるが、cdでは特別にワイルドカード文字列が指定できるので、例えば「cd win*」などとしてもよい。win*にマッチするフォルダが複数ある場合は、最初にマッチしたフォルダに移動する。
また空白文字が含まれる名前であっても引用符で囲む必要はなく、例えば「cd c:\program files」「cd c:\prog* file*」などとしてもよい。
さらにこのcdコマンドでは、パス区切り文字として「 \ 」ではなく「 / 」も利用できるので、「cd /program file*」「cd c:/windows/system32」のように指定してもよい。
カレントフォルダを変更するコマンドには、pushd/popdコマンドもある。pushdコマンドを使うと、カレントフォルダの場所をスタックにプッシュ(一時保存)してから、カレントフォルダの場所が変更される。作業後、最後にpopdコマンドを実行すると、最初にプッシュしたカレントフォルダに戻ってくる。pushd/popdはネストして利用できる。スタックのネスト状態を見るには引数なしでpushdコマンドを実行する(pushd/popdでは、cdと違って、空白やワイルドカードを含んだパスは使えない)。
- TIPS「pushd/popdでフォルダを移動する」
なお、pushd/popdなどで複数のパスや作業環境を管理するよりも、場合によっては多数のコマンドプロンプトを開いて、[Alt]+[Tab]キーで切り替える方が簡単かもしれない。自分の作業スタイルに合わせて選んでいただきたい。
ファイルの内容を表示するtype/moreコマンド
テキストファイルの内容を確認するには、typeコマンドかmoreコマンドを使用する。typeは指定されたファイルの内容を表示するコマンドだが、長いファイルだとあっという間にスクロールして見えなくなってしまうので、通常はmoreを使うとよい。複数のファイル名を指定すると、全てのファイルが連続して表示される。
moreでは、指定されたファイル(ワイルドカードなどを使って複数指定可能)の内容を1ページずつ表示する。[Space]キーを押すたびに1画面ずつスクロールし、[Enter]キーだと1行ずつスクロールする。ファイルが複数ある場合は、[F]キーを押すと次のファイルへと進む。途中でやめるには[Q]キーか[Ctrl]+[C]を押す。
他のコマンド(dirなど)の出力を1ページずつ見るなら、2つのコマンドをパイプで接続して、「dir /s/b c:\ | more」のようにして使う。
ファイルの編集/プログラムの起動
ファイルの内容を編集するには、そのためのプログラムを起動する。例えばテキストファイルならメモ帳(notepad.exe)を起動し、ビットマップファイルならペイントプログラム(mspaint.exe)などを起動する。だが、通常はどのアプリケーションを起動するかを気にせずに、単にコマンドライン上で「text.txt」のように入力すればよい(ファイルの拡張子まで省略せずに入力すること)。すると、「.txt」のオープン用に割り当てられているプログラム(通常はメモ帳)が自動的に起動する。これはちょうどエクスプローラーでファイル名をダブルクリックした場合と同様である。直接特定のプログラムを使って起動したければ、例えば「write test.txt」のようにする(writeは「ワードパッド」アプリのこと)。
startコマンドを使って起動するパラメーターを指定すると、アプリケーションプログラム以外のものも実行/起動できる。例えば「start www.atmarkit.co.jp」とすると、[ファイル名を指定して実行]で「www.atmarkit.co.jp」と指定するのと同じく、Webブラウザで@ITのWebサイトが表示される。startコマンドで指定できる特殊なWindowsフォルダの例については、次の記事も参照していただきたい。
例えばエクスプローラの「送る」メニューにコマンドを追加したいような場合は、エクスプローラーでパスを探すよりも、コマンドプロンプトなどからstartで開く方が簡単だ。
コマンド用のPATHを追加する
アプリを起動するときに、アプリのフルパス名ではなく、単に「notepad test.txt」などとしてメモ帳が起動できるのは、notepad.exeがPATH環境変数の指すフォルダの先に存在する(「PATHが通っている」と言う)からである。自分がよく使うアプリやコマンド、バッチファイルなどをどこか1カ所に集めて(例:C:\COMMAND)、このフォルダをPATHに追加しておけば、コマンドを簡単に起動できるようになる。PATHの追加方法については、以下の記事を参照のこと。
PATH環境変数には、システム全体で有効になる変数と、ユーザーごとに固有に設定される変数の2種類がある。通常はユーザーごとに設定しておけばよいだろう。
コマンドプロンプトの開始時に特定のコマンドを実行させる
コマンドプロンプトの開始時に、ある特定の決まったコマンドやバッチファイルなどを実行して、CUIの利用準備をしておきたいことがある。UNIXやLinuxのシェルでは、例えば.loginや.bashrcファイルなどにコマンドを記述しておくと、シェルの開始時やログイン時にその中にあるコマンドが実行されるようになっている。
Windows OSのコマンドプロンプトにはそのような機能はないが、「cmd /k」のようにしてコマンドプロンプトを起動すると、バッチファイルの実行後にユーザーの入力待ちになるので、ほぼ同じことを実現できる。詳細は次の記事を参照していただきたい。
- TIPS「コマンドプロンプトの起動時にバッチファイルを自動的に実行させる」
- TIPS「バッチファイルの基本的な使い方」
バッチファイルにしておくと簡単に再実行できる。たとえ短いコマンド列でも、何回も使う予定があったり、パラメーターが長くて複雑だったりしたら、バッチ化しておくとよいだろう。
フォルダを作成する
新しいフォルダを作成するには、md(mkdir)コマンドを使用する。フォルダ名を複数列挙するとそれらが同時に全て作成されるし、階層フォルダ名を指定すると(例「md ¥aa¥bb¥cc¥dd¥ee」)、途中のサブフォルダが存在しない場合はそれらが自動的に作成される。
ファイルやフォルダを削除する
ファイルを削除するにはdel(もしくはerase)コマンドを利用する。フォルダを削除する場合はrd(rmdir)コマンドを使用する。rdコマンドではワイルドカードを指定できないので、必要なら複数のフォルダ名を列挙すること。
LinuxなどのOSと違い、削除対象がファイルの場合はdelコマンド、フォルダの場合はrdコマンドと分かれている。delコマンドではフォルダは削除できない。例えばあるフォルダmyfolderに対して「del myfolder」を実行すると、これは「del myfolder\*.*」を指定したのと同じになり、フォルダの中のファイルだけが全部削除される(いちおう確認メッセージが表示される)。
フォルダツリーを再帰的に全て削除するには、rdに/sオプションを付ける。例えば、「cd /tmp」としてから「rd /s .」とすると、/tmp以下を全て削除できる。この場合、カレントフォルダが/tmpなので、/tmp自身は削除できずにエラーメッセージが表示されるが、その中のファイルやフォルダは、(削除権限がない場合や使用中のファイルなどを除き)可能な限り全部削除される。
ファイルをコピーする
ファイルやフォルダをコピーするには、copyコマンドかxcopy、robocopyコマンドを使用する。copyは一番シンプルなファイルのコピーコマンドで、xcopy/robocopyはサブフォルダを含むツリーのコピーに利用する。xcopyの方が昔からあるコマンドで、基本的には一方向の上書き/更新コピー用、robocopyは2つのフォルダの同期も可能で(必要ならコピー先から余分なファイルを削除する)、再試行やログ機能なども備えた、高機能なコマンドである。以下のTIPSも参照のこと。
- TIPS「xcopyでファイルをバックアップする」
- TIPS「robocopyでフォルダをバックアップ/同期させる」
これらのコマンドでは、「copy <コピー元> <コピー先>」のような順番でパラメーターを指定する。コピー元には、ファイル名やフォルダ名(ワイルドカード指定可能)、コピー先にはファイル名(単一ファイルのcopyの場合)かフォルダ名、ドライブ名(C:やD:など)を指定する(例:「copy template.docx new.docx」「copy *.txt d:」「copy . ..¥backupfolder」)。ファイルの名前を変えながらコピーできるのはcopyコマンドだけである。
copyコマンドでは、2つ以上のファイルの結合もできる。例えば「copy /b file1.txt+file2.txt+mydata*.txt newfile.txt」とすると、コピー元に指定した複数のファイル(ワイルドカート指定や「+」記号で連結したファイル)を全部連結して、newfile.txtが作成される。/bオプションは、ファイルをバイナリモードで連結させるための指示であり、これがないとテキストデータ部分(ファイル中のEOF記号、0x1aもしくはCtrl-Zまでのデータ)しか結合されない。
サブフォルダごとコピーするには、通常はxcopyコマンドを使う。例えば「xcopy /s/e folder1 folder2」とすると、フォルダfolder1以下を全部folder2の中へコピーする。/sはフォルダも再帰的に全部コピーする、/eは空フォルダもコピーする、というオプションである。「xcopy /s/e/d . d:¥backup」のように/dを付けると、新しいファイル(更新されているファイル)だけを上書きコピーできる。
ファイルの名前を変更したり移動したりする
ファイル/フォルダ名を変更するにはren(rename)コマンドを使用する。(コピーではなく)移動するには、moveコマンドを使う。
ただしrenコマンドは非常に制約が厳しく、ファイル名の長さが変わるような用途にはほとんど使えない(例:「photo*.jpg」→「2019年春-旅行写真*.jpg」に変更することはできない)。このような場合は、コマンドプロンプトでなく、PowerShellのような別ツールを使うのがよいだろう。詳細は次の記事を参照していただきたい。
もしくは、いったんファイル名部分だけを取り出してから(先のdirコマンドの解説参照)、テキストエディタで「ren photo20190301.jpg 2019年春-旅行写真20190301.jpg」といったコマンド文字列に整形し直し、それを(バッチファイルにするか、コマンドプロンプトに貼り付けて)実行するという方法もある。何回も行う作業でなければ、このような“泥臭い”方法もお勧めである。
ファイルの属性やセキュリティを設定・確認する
ファイルの属性を表示/設定するにはattribコマンド、ファイルのセキュリティ設定(アクセス制御リストACL)を表示/設定するにはcaclsやicaclsコマンドなどを利用する。またユーザー名と権限の表示にはwhoamiコマンド、ファイルの所有権の取得にはtakeownコマンドが利用できる。
- TIPS「caclsコマンドでACLを編集する」
- TIPS「icaclsコマンドでファイルのアクセス制御リストACLを保存/復元する」
- Windows OS入門「アクセス制御リストACL」
- TIPS「ファイルの所有者を変更する」
- TIPS「Windowsのエクスプローラーで表示される属性情報文字の意味は?」
文字列を検索する
テキストやテキストファイルの中に特定の文字列が含まれているかどうかを調べるにはfindコマンドを使用する。ただしこのコマンドでは固定的な文字列しか検索できない。正規表現を使って検索したければfindstrという別のコマンドを利用する。
- TIPS「findstrで正規表現を検索する」
なおfindコマンドを「find /c /v "文字列"」のように使うと、テキストの行数を数えることができる。次の記事を参照のこと。
テキストをソート/比較する
テキストファイルの内容を、その文字コード順にソートするにはsortコマンドを使用する。テキストファイルの比較にはfcコマンドを利用し、バイナリファイルの比較にはfc /bコマンドかcompコマンドを利用する。
ファイルに対して繰り返し処理する
ファイルやフォルダ(サブフォルダも含む)の一覧に対して、コマンドなどを繰り返し適用するには、forコマンドやforfilesコマンドを利用する。forでは、基本的には、見つけたファイルやフォルダ全てを対象にして何らかの操作を行うが、forfilesでは例えば1年以上更新がないファイルだけを削除や移動する、といったことができる。
- 「forコマンド」(コマンドライン徹底活用)
- TIPS「Windowsのforfilesコマンドで条件に合うファイルを取り出して処理する」
なおforは数値による繰り返し指定などの機能も持つので、ファイル処理以外にも幅広く使える。例えば「for /l %i in (1,1,1000) do copy data.txt data-%i.txt」というコマンドを実行すると、1つのファイルを、名前を変えながら1000個複製できる。
日本語環境と英語環境を切り替える(文字コード/コードページの変更)
コマンドプロンプト上では、デフォルトでは日本語でヘルプやメッセージなどが表示されるが、英語モードで表示させたい場合は「コードページ」を英語に切り替えればよい。英語モードにするには「chcp 437」、日本語モードに戻すには「chcp 932」を実行する。次の記事を参考にして、バッチファイルにしておくとよいだろう。
- TIPS「jp、usコマンドでコード・ページを切り替える」
なお日本語Windows OS(と、そのコマンドプロンプト)で使われる日本語文字コードは、デフォルトでは「Shift-JIS(コードページ番号932)」である。Unicode(のコードページ番号65001)を指定しても、ほとんどの標準コマンドはUnicodeコードページでの動作に対応していなかったり、挙動がおかしくなったりするので(もしくは表示が全部英語メッセージになったりするので)、利用できないと考えた方がよい。
UTF-8のデータを使うことが多いのであれば、Windows 10のWSLなどの導入を検討してもよいかもしれない。
ディスクを管理する
ボリューム全体のファイルシステムが正しいかどうかを検査するには、chkdskコマンドを使用する。ディスクのパーティションなどを管理するには、diskpartコマンドを利用する。
他にも、ディスクをフォーマットするformatコマンド、デフラグするdefragコマンド、NTFSの暗号化属性を設定するcipherコマンド、NTFSの圧縮属性を設定するcompactコマンド、アーカイブファイルを作成するtarコマンド(Windows 10以降)などがある。1つのファイルに対して暗号化と圧縮の両方を設定することはできず、どちらか一方しか利用できない。また圧縮を行うためにはNTFSのクラスタサイズが4KB以下でなければならない。
fsutilというコマンドもファイルシステムの管理などでよく使われる。このコマンドには多くのサブコマンドがあるが、例えば簡単に巨大なファイルを作成する機能なども持っている。
プロセス管理
プロセスの一覧の表示にはtasklistやwmicコマンド、強制終了にはtaskkillコマンドが利用できる。システムを終了させたり、再起動させたりするにはshutdownコマンド、ログオフ(サインオフ)するだけならlogoffコマンドが利用できる。一時的に他のユーザー権限でプログラムを実行するにはrunasコマンドを使う。
- TIPS「コマンドラインから電源オフや休止を実行する」
- TIPS「WindowsでWMIとwmicコマンドを使ってシステムを管理する」
- TIPS「Windowsのrunasコマンドで、一時的に他のユーザー権限でプログラムを実行する」
シンボリックリンクやマウント/ジャンクションポイントの管理
ハードリンクやシンボリックリンク、ジャンクション、マウントポイントなどを管理するには、mklinkやmountvol、substコマンドなどを利用したり、ディスクの管理ツールでマウントしたりする。
これらのリンク機能を利用すると、例えば空き領域の少なくなったC:ドライブの\DATAフォルダの下に、新たに増設したE:ドライブの\DATAVOLフォルダをマウントして、データ用の空き領域を増やしたり、C:\COMMANDの下にF:\MYCMDフォルダをマウントして、複数のPCで同じフォルダ構成を実現する、といった使い方ができるようになる。
レジストリを操作する
レジストリの操作にはregコマンドが利用できる。いちいちGUIのツールで目的のキーを探しながら操作するよりも簡単に操作できるし、複数のPCで同じ設定を反映する、といったことが簡単にできるようになる。
- TIPS「コマンドプロンプトでレジストリを操作する」
ネットワーク関係のコマンド
ネットワーク関係のコマンドも多数あるので、全て列挙することはできないが、簡単にまとめておくと次のようなものがある。
コマンド名 | 概要と解説記事 |
---|---|
ping | ネットワーク的に到達できるかを調べる ・Windowsのpingコマンドでネットワークトラブルの原因を調査する |
ipconfig | アダプターごとのTCP/IPの設定状態などを調べる |
netstat | TCP/IPのプロトコルスタックの状態を調べる ・netstatコマンドを使いこなす |
net | ネットワークファイル共有サービスなどを管理するコマンド。多くのサブコマンドがある ・netコマンドの使い方 ・net userコマンドの使い方 ・コマンドプロンプトでファイル共有を管理する |
nbtstat | NetBIOS over TCP/IPの状態を調べる ・IPアドレスからホスト名を見つける方法 ・ホスト名からIPアドレスを見つける方法 |
tracert | 各ルーターまでの到達状態などを調べる ・tracertでネットワークの経路を調査する |
nslookup | DNSの状態を調べる ・nslookupの基本的な使い方(イントラネット編) |
route | ルーティングテーブルの状態を調べる ・ルーティングテーブルを操作する |
arp | ARPテーブルの状態を調べる ・ARPコマンドで通信先を特定する |
ftp | ftpのクライアントプログラム ・ftpでネットワークの速度を測定する |
netsh | ネットワーク関連コンポーネントの管理ツール ・netshコマンドでTCP/IPのパラメータを設定する ※netshは非常に多くのサブコマンドを持つ。詳しくはnetshのヘルプを参照のこと |
telnet | telnetのクライアントプログラム ・Telnetクライアントの使い方 |
netcfg | ネットワーク関連コンポーネントの構成ツール |
pathping | tracertとpingを組み合わせたようなネットワークの経路調査コマンド ・pathpingでネットワークの経路を調査する |
hostname | ホスト名を表示する ・コンピュータ名を素早く調査する |
msg | メッセージを送信する |
finger | fingerサービスを表示する |
getmac | MACアドレスを表示する |
mrinfo | IPマルチキャストルーターの構成情報を表示する |
netdom | ドメインコンピュータを管理する ・Active DirectoryのFSMO役割を担当するサーバを調査する |
rpcping | RPCでの接続性をテストする |
ssh/scp/sftp | セキュア通信用クライアント。Windows 10以降でのみ利用可能 |
curl | HTTP通信などをサポートした通信クライアント。Windows 10以降でのみ利用可能 |
ネットワーク関連の主なコマンド Windows OSで利用できる主なネットワーク関連のコマンドおよびその解説記事を列挙しておく。OSのバージョンやインストールされているネットワークコンポーネントによっては利用できないものやオプションもある。 |
■更新履歴
【2019/01/24】最新状況に合わせて内容を更新しました。
【2015/03/26】コマンドラインの編集用ショートカットやコードページに関する記述を追加しました。
【2015/02/18】doskeyに関する記述を追加しました。
【2015/02/13】Windows Vista/Server 2008〜Windows 8.1/Server 2012 R2に対応しました。
【2002/06/22】初版公開(対象はWindows 2000/Windows XP)。
■この記事と関連性の高い別の記事
Copyright© Digital Advantage Corp. All Rights Reserved.