Windows コマンドに Linux 風なエイリアスを登録して永続化させる

昼間の職場が Windows ばっかりなもんで、Windows コマンドに詳しくなった。でも Linux コマンドも一度覚えるととても便利で、うっかり ls することもしばしば。

つーわけで、コマンドプロンプトで ls してもいいように、エイリアスを登録しようと思う。

Windows コマンドの中では「エイリアス」を「マクロ」と呼ぶみたい。自分は試してないけど、特定のコマンド名にバッチファイルを当てて複雑な処理をさせることもできる様子。今回は既存の Windows コマンドをそのまま使う形で Linux 風味に使えるようにする。

エイリアスの登録は doskey コマンド

コマプロで doskey ls=dir と打てば、その場限りで ls エイリアスに dir コマンドを割り当てられる。が、コマプロのウィンドウを閉じてしまうとこの設定は消えてしまう。

エイリアスを永続化させる方法1 : 起動時オプション

doskey /macros=(ファイル名) で、そのファイルに書いたエイリアス群を一括で取り込める。このマクロファイルをコマプロの起動時にオプションで実行させてやるというもの。

たとえば %USERPROFILE% (大抵は C:\Users\(ユーザ名)\) に Macros.txt を置き、その中身に以下のようにエイリアスを書いておく。

alias=if "$1"=="" (doskey /macros) else (doskey $*)
cat=type $*
cp=copy $*
h=doskey /history
history=doskey /history
ll=dir /ad
ls=dir /w
lv=more /E $*
mv=move $*
pwd=echo %CD%
tree=tree /f $b more
unalias=doskey $*=

そしてコマプロのショートカットで実行ファイル名の後ろに /k doskey /macrofile=%USERPROFILE%\Macros.txt と付けてあげれば OK。

起動後から上の Macros.txt が読み込まれるので、lspwdcat などが使えることになる。

エイリアスを永続化させる方法2 : レジストリに登録

上述の起動時オプションをレジストリで行うようなイメージ。上述と同じようにマクロファイルを作成しておく。

レジストリエディタを開き、HKEY_CURRENT_USER\Software\Microsoft\Command Processor\ に移動したら、文字列値 AutoRun を作成し、その値に doskey /macrofile=%USERPROFILE%\Macros.txt と書く。

するとシステムの再起動なしに、コマプロの再起動後にマクロ群が反映されている。

なお、cmd /? で確認できるが、このレジストリキーは以下のいずれかで AutoRun キーが指定されていればそれが読み込まれる様子。

自分はこれで設定した。

その他参考

マクロ登録にパイプ等を使う場合は特殊な記号を使わないといけない。

>    <-->   $g
>>   <-->   $g$g
<    <-->   $l
|    <-->   $b
&    <-->   $t

また、マクロファイル内でコメントアウトしたい場合は、;= を使うケースが多いみたい。詳しくは以下を参照。

文法や登録するエイリアスに若干の違いがあるので、自分がほしいマクロを作ろう。

いつか可能な限り Linux コマンドに似せたマクロ一覧を作りたい。

えっ、Msys なり Cygwin なり使えばいいって?そりゃそうなんだけどさw