Windowsのコマンドプロンプトを使いやすく(Linuxに近付ける的な意味で)

普段からWindowsとそれ以外のOSを使っていると、コマンドプロンプトを使ったときに思わず「ls」って打っちゃいますよね?コマンドプロンプトを複数上げてると、どの窓がどれだったか分からなくなりますよね?cygwinを入れたり、GnuWin32 を入れたりすれば、「ls」問題は解決するのですが、日本語がうまく表示できなかったりして何かと面倒です。そこで doskey を使って、コマンドのエイリアスを設定してみましょう。また、Linuxにおける「.bashrc」のようなことをWindowsでやる方法も紹介します。

doskeyの使い方

doskeyは「alias」のような「マクロの作成」という機能があります。詳しい使い方やその他の機能は、コマンドプロンプトを起動して「doskey /?」で確認してください。

とりあえずここでは、以下のような内容を持つテキストファイルを「macro.txt」という名前で用意してみます。

ls=dir /d /og $*
ll=dir /od $*
cp=copy $*
mv=move $*
pwd=cd $*

コマンドプロンプトを開き、上記のファイルをdoskeyで読み込みます。

 > doskey /macrofile=macro.txt

すると、まあ、なんということでしょう!「ls」でファイル一覧が表示されるじゃありませんか!!これだけでも結構嬉しかったりしますが、doskeyで定義するマクロの内容には、上記のような単純なコマンドだけでなく、自分で用意したバッチファイルを指定することもできます。これを使って、「cdでディレクトリを移動したら、カレントディレクトリのパスをコマンドプロンプトのタイトルに表示する」マクロを定義してみましょう。

カレントディレクトリ名をコマンドプロンプトのタイトルに表示させる

コマンドプロンプトのタイトル変更には「title」コマンドを使用します。また、カレントディレクトリは「%CD%」という変数で参照できるので、以下のコマンドによりカレントディレクトリのパス名をコマンドプロンプトのタイトルに設定できます。

 > title %CD%

では、まずcdの後にタイトルを変更するバッチを作りましょう。

@echo off
if %1. == . cd /d %HOMEDRIVE%%HOMEPATH% && goto end
cd /d %1
:end
title %CD%

基本は「cd %1」と「title %CD%」だけあればよいのですが、ここでは「引数なしならホームに移動する」「常にドライブも変更する」ようにしてあります。このバッチを適当な名前で保存して(ここではホームディレクトリ直下の mycd.bat とします)、doskeyコマンドでcdに割り当てます。

 > doskey cd="%HOMEDRIVE%%HOMEPATH%\mycd.bat" $*

さあ、cd でどこかに移動してみましょう!コマンドプロンプトのタイトルは、どこに行こうともそのパスを表示してくれます!

コマンドプロンプト起動時にマクロを読み込む

ここまでの作業の結果、「作業を行ったコマンドプロンプトでは」doskeyが効いています。が、新しいコマンドプロンプトを立ち上げると、cdしてもタイトルが変わらないし、lsはコマンドとして認識されません。doskeyはそのコマンドプロンプトにしか効かないんですね。だからといって、コマンドプロンプトを立ち上げるたびに「doskey /macrofile=macro.txt」とかやってられません。そこで、コマンドプロンプトの起動時に、自動でマクロを読み込ませるよう設定しましょう。Linuxで言うところの「.bashrc」みたいな感じですね。

cmd.exeのヘルプ(「cmd /?」で表示できます)を見ると、以下のような記述が見つかります。

コマンド ラインで /D が指定されなかった場合は、CMD.EXE の開始時に次の REG_SZ
または REG_EXPAND_SZ レジストリ変数が検索されます。次のレジストリ変数の両方ま
たはどちらかが存在する場合、それらを最初に実行します。

    HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun

    HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun

ようは、立ち上げ時に上記レジストリで指定されたコマンドを実行するよ、って事なので、実行させるバッチファイルを用意します。

@title %CD%
@doskey /macrofile="%HOMEDRIVE%%HOMEPATH%\macro.txt"
@doskey cd="%HOMEDRIVE%%HOMEPATH%\mycd.bat" $*

これを「cmdrc.bat」など適当な名前で保存したら、レジストリを編集します。HKLMかHKCUで上記レジストリをたどり、Command Processor で右クリックして「新規」から「文字列値」を作成します。「名前」には「AutoRun」、「値のデータ」には上で作成したバッチファイルを「"%HOMEDRIVE%%HOMEPATH%\cmdrc.bat"」のように指定します。レジストリを設定したら、コマンドプロンプトを起動してみましょう。これまで設定してきたマクロが自動で読み込まれ、最初から「ls」が使えるようになりましたね!


AutoRunで実行するバッチには、エイリアスの設定以外にも、PATHの設定やプロンプトの変更といった使い道が考えられます。お好みに合わせて、色々いじってみてください。これでもう「えーっと今Windowsだからdir・・・」とか、「タイトルが同じコマンドプロンプトが何枚もあってどれがどれだか分からない」といった悩みとはさよならです!