コマンドプロンプトでエイリアスを使う。

Windowsのコマンドプロンプトでは、ドライブごとにカレントディレクトリを記憶している関係なのか、たとえばc:\tempからd:\appsに移動したいときに

c:\temp>cd d:\apps
c:\temp>

などとしても、カレントディレクトリはc:\tempのまま。d:ドライブに移動すると、d:ドライブではd:\appsに移動しているという実装になっています。つまり、カレントディレクトリはドライブごとに管理されています。

コマンドプロンプトの実体であるcmd.exeの組み込みコマンドcd (chdir)では、

cd /?

などとするとヘルプが表示され、その中に/dオプションがあることがわかります。これはドライブも含めて移動するオプションで、

c:\temp>cd /d d:\apps
d:\apps>

とすればカレントドライブもカレントディレクトリも同時に変更され、現在位置が d:\apps になります。

ところでWindows10では doskey というユーティリティがあり、これを使うとUNIX上のシェルのようにエイリアスを使用することができるようになります。

D:\apps>doskey /?
コマンド ラインの編集、Windows コマンドの再呼び出し、マクロの作成を行います。

DOSKEY [/REINSTALL] [/LISTSIZE=サイズ] [/MACROS[:ALL | :実行ファイル名]]
  [/HISTORY] [/INSERT | /OVERSTRIKE] [/EXENAME=実行ファイル名]
  [/MACROFILE=ファイル名][マクロ名=[テキスト]]

  /REINSTALL               Doskey の新しいコピーを組み込みます。
  /LISTSIZE=サイズ         コマンド履歴バッファーのサイズを設定します。
  /MACROS                  すべての Doskey マクロを表示します。
  /MACROS:ALL              Doskey マクロを含むすべての実行可能ファイルの
                           すべての Doskey マクロを表示します。
  /MACROS:実行ファイル名
                           指定した実行可能ファイルのすべての Doskey マクロを
                           表示します。
  /HISTORY                 メモリ内のすべてのコマンドを表示します。
  /INSERT                  入力したテキストが古いテキストに挿入されるように
                           指定します。
  /OVERSTRIKE              入力したテキストが古いテキストを上書きするように
                           指定します。
  /EXENAME=実行ファイル名  実行可能ファイルを指定します。
  /MACROFILE=ファイル名    作成するマクロ ファイル名を指定します。
  マクロ名                 作成するマクロ名を指定します。
  テキスト                 登録するコマンドを指定します。

上下方向キーはコマンドを再度呼び出します。Esc はコマンド ラインをクリア
します。F7 はコマンド履歴を表示します。Alt+F7 はコマンド履歴をクリアします。
F8 はコマンド履歴を検索します。F9 は数字によるコマンドを選択します。
Alt+F10 はマクロ定義をクリアします。

以下は、DOSKEY のマクロ定義で使用する特殊コードです:
$T     コマンド セパレーターです。マクロ中で複数のコマンドを定義できます。
$1-$9  バッチ パラメーターです。バッチ ファイル中の %1-%9 と同じ意味です。
$*     コマンド ライン上のマクロ名に続くテキストで置き換えられるシンボルです。

これを利用してコマンドプロンプトで doskey cd=cd /d $* とすれば、cd の動作が cd /d に展開されるのでドライブも一緒に変更できるようになります。

さらにこれをコマンドプロンプト起動時に自動的に設定するには、regeditを利用して HKEY_CURRENT_USER\Software\Microsoft\Command ProcessorAutoRunというキーを作り、そこに初期設定として実行したい内容を記述したバッチファイルを設定しておきます。

登録するバッチファイルは以下のような感じで作成しておきます。

@echo off
Doskey cd=cd /d $*
Doskey history=doskey /history
Doskey vim="C:\Program Files\Vim\vim.exe" $*

なんて感じで。

また、別なやり方として、ホームディレクトリにDOSKEYマクロファイルを置く方法もあります。ファイル名は cmd.rc で、以下のような内容を記述します。AutoRun には doskey /macrofile=%userprofile%\cmd.rcなどとします。

CD=CD /D $*
H=doskey /history
HISTORY=doskey /history
ALIASES=doskey /macros

こちらのほうが、よりUNIX的な感じがしますね。

0 件のコメント:

コメントを投稿

Windowsでシンボリックリンクを試してみる。

きっかけは、1つのファイルを別の名前で起動したら違う動きになるようなスクリプトを書く、でした。  busybox なんかでは、同じ実行形式ファイルの名前を、lsにすればlsと同じ、cpとすればcpと同じ動作をするようにしてますが、Pythonスクリプトでそれと同じように argv...