CMD.EXEとPowerShellと『[改訂新版]Windowsコマンドプロンプトポケットリファレンス』
今回は、少し専門的な書籍になるが『[改訂新版]Windowsコマンドプロンプトポケットリファレンス』(技術評論社)を紹介する。
[改訂新版]Windowsコマンドプロンプトポケットリファレンス
■紹介文の掲載が遅れた言い訳と、CMD.EXEについて
本書は、コマンドプロンプト(CMD.EXE)と、Windows標準のコマンドラインツールを網羅的に紹介した書籍である。
ずいぶん前に献本していただいたのだが、しばらく忙しくて、そのうちに時機を逸してしまった。
先月、一部メディアで「Windows 10の新しいビルドからコマンドプロンプト(CMD.EXE)が消える」というほとんど誤報に近いニュースが流れたので、この機会に紹介しておきたい(それでも1ヶ月過ぎてしまったが)。
ちなみにCMD.EXEについての真実はこうである。
- [Windows]-[X]などで表示される既定のシェルがPowerShellに変更
(明示的に変更することは以前からできた) - スタートメニューからコマンドプロンプトが消える
スタートメニューに登録されていないコマンドは意外にあるのだが、いずれも専門家向けのシステム保守用ツールである。有名なところでは「レジストリエディタ(REGEDIT.EXE)」が登録されていないし、起動オプションを変更する「システム構成(MSCONFIG.EXE)」も登録されていない。
コマンドプロンプト(CMD.EXE)も、レジストリエディタと同様の保守ツールになるのだろう。標準コマンドから保守ツールになることは「格落ち」でも何でもない。おそらく、これからも完全に消えることはないだろう。
ただし、入門書から記述が消えていく可能性はある。システム管理者にとって重要な機能であるにもかかわらず、学習教材が減っていくわけだ。
ほとんどのコマンドは、PowerShellから呼び出せるし、CMD.EXEよりも機能的にはPowerShellの方が上だから、今さらCMD.EXEを学習する意味はないと思う人もいるかもしれない。
しかし、いくつかのコマンドはCMD.EXEからの実行を想定しており、PowerShellから利用するのが面倒な場合もある。
たとえば、テキストファイルから文字列を検索するfindコマンドは、検索文字列をダブルクォートで囲む必要がある。
しかし、PowerShellは入力されたダブルクォートを外してしまうため、findコマンドは「ダブルクォートがない」というエラーになる。findコマンドにダブルクォートを送るには、さらにシングルクォートで囲む。
▲PowerShellからfindコマンドを使う
最初の実行例と2つめの実行例を見比べて欲しい
CMD.EXEの使い方はもちろん、PowerShell以外の大半のコマンドの使い方が網羅されている。
このように、PowerShellから使いにくいコマンドもあるため、単にコマンドを実行するならCMD.EXEの方がトラブルが少ない。
これからWindowsの管理をする方は、PowerShellももちろん大事だが、それに加えてCMD.EXEの使い方を習得して欲しい。また、大量に用意されているコマンドラインツールも使いこなして欲しい。
以下は、旧版『Windowsコマンドプロンプトポケットリファレンス』出版時に書いた文章を、改訂新版にあわせて書き直したものである。本題はこちらなので、最後まで読んでいただければ幸いである。
■『[改訂新版]Windowsコマンドプロンプトポケットリファレンス』について
著者の山近慶一氏とはWindows NT時代からの付き合いだから、もう20年ほどになる。古くから月刊Windows NT World、Windows 2000 World、Windows Server World (いずれもIDGジャパン)に毎月多数の記事を寄稿しており、その技術力は定評がある。
期待しながら実際に読んでみた。序章では、コマンドラインの利点と欠点、そして基礎的な概念やコマンドプロンプトの使い方が簡潔に説明されている。複数のコマンドの連続実行機能や標準エラー出力のリダイレクト方法など、熟練者でも意外に知らないことがまとまっている。Chapter 1以降が本文である。あまり馴染みがないコマンドも積極的に紹介されているため、熟練者であっても全体を眺めることできっと得られるものがあるはずだ。
一般にコマンドラインリファレンスには、全コマンドをアルファベット順に並べる方法と、用途ごとにジャンルを分けて紹介する方法がある。コマンド名が分かっている場合はアルファベット順が便利だが、目的からコマンドを知りたい場合はジャンル別が便利だ。
本書は、ジャンル毎に章を分け、ジャンル内では原則としてアルファベット順にコマンドを紹介することで、両方の長所を活かしている。索引も充実しているため、完全なアルファベット順一覧を見ることも可能である。
本書の工夫はもう1つある。Windowsのコマンドはサブコマンドによって全く違う動作をするものがある。そこで、一部のコマンドについてはサブコマンドを含めた見出しになっている。一見分かりにくいようだが、実際の活用現場ではこの方が使いやすいはずだ。
解説は簡潔で分かりやすい。UACによる動作に違いにも触れられており、標準のWindowsヘルプよりもずっと役に立つ。UACを有効にすると、一部のコマンドで従来と異なる動作をするのは管理者の悩みの種だ。本書を読めば、そうした疑問にも答えてくれるだろう。
また、バッチ処理に必要な環境変数展開ルールや、CMDコマンドの拡張機能などについてもページを割いており、システム管理の自動化に必要な知識が網羅されている。このあたりは類書がほとんどないため、非常に役に立つ。
初版にあった若干の誤認ももちろんすべて修正されている。
このように、非常に有益な書籍だが1つだけ問題がある。とにかく文字が小さい。限られたページ数と判型で最大の情報を詰め込むにはやむを得ないのだろうが、私の目には少々きつい。
とは言え、これらが「コマンドリファレンス」としての本書の価値を損なうわけではない。若い人には十分な文字サイズだろう。我々の世代と違って、コマンド利用を経験していない人には、特に読んで欲しい1冊である。