WindowsXPのコマンドプロンプトで動く、UNIXのaliasもどきのエイリアス定義用バッチファイル。
UNIXのaliasに相当するコマンドとしては、doskeyがある。
が、aliasは、一覧を表示したり特定のエイリアスだけを表示したり出来る。
これを実行できるaliasコマンドをdoskeyで別名定義してみた。
以下の内容をバッチファイルとして保存し、コマンドプロンプトを起動した最初に実行すれば、以降aliasとunaliasが使えるようになる。
>alias …エイリアスの一覧表示 alias=〜 unalias=doskey $*= >alias ls=dir/w $* …エイリアスの定義 >alias ls …特定エイリアスの内容表示 ls=dir/w $* >unalias ls …エイリアスの削除 >ls 'ls' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。
@echo off doskey alias=if "$1"=="" (doskey /macros) else ^ for /f "delims== tokens=1,*" %%i in ("$*") do^ @if "%%j" neq "" (^ doskey $*^ ) else (^ doskey /macros ^| findstr /b /c:"%%i="^ ) doskey unalias=doskey $*=
作りは、以下のような感じ。
なお、各行の行末の「^」は、次の行へ継続していることを表す。
普通、丸括弧を使って複数コマンドを書いている場合は行継続文字は不要だが、今回はあくまで「doskey」コマンドの定義であり、ifやらelseやらの部分はdoskeyの引数(単なる文字列)でしかないので、丸括弧の構文であるとは見なされない。
ただし、途中の「|」だけは違う。これはdoskeyの終わりと認識されてしまうので、「^」を付けてエスケープしている。