DOSKEY(マクロ・エイリアス)
cd /d C:\Users\user\Documents\Projects や dir /a /o:-d のように、長いコマンドを何度も入力するのは手間がかかります。
DOSKEY コマンドを使うと、よく使うコマンドに短い名前を付けて呼び出せます。この仕組みをマクロ(他のシェルでいうエイリアス)と呼びます。
基本的な使い方
DOSKEY マクロ名=コマンド
使用例
ls と入力すると dir が実行されるマクロを作ります。
doskey ls=dir $*
登録後に ls と入力すると、dir と同じ結果が表示されます。

中小企業経営者のためのRPA入門 RPA導入を成功させる方法

60分でわかる! AIエージェント 超 入門

コマンドラインの黒い画面が怖いんです。

知識・才能ゼロでもらく~に月10万円稼ぐ! よくわかるAI副業超入門
マクロとして展開されるのは、入力した行の先頭の単語だけです。また、マクロは対話的に入力したときだけ有効で、バッチファイルの中では使えません。
引数を受け取るマクロ
マクロの定義には、入力時の引数を受け取るための特殊な記号を使えます。
| 記号 | 説明 |
|---|---|
$1〜$9 | マクロ名の後ろに入力した 1〜9 番目の引数 |
$* | マクロ名の後ろに入力したすべての引数 |
$T | コマンドの区切り(& の代わり)。複数のコマンドを連結できる |
$G | リダイレクト > の代わり |
$L | リダイレクト < の代わり |
$B | パイプ | の代わり |
>、<、|、& はマクロ定義の中でそのまま書くと、DOSKEY コマンド自体のリダイレクトやパイプ、コマンドの区切りとして先に解釈されてしまいます。マクロの中で使うときは、表の記号に置き換えてください。
すべての引数を渡す($*)
doskey ll=dir /a /o:-d $*
ll C:\Windows と入力すると、dir /a /o:-d C:\Windows として実行されます。dir のオプションについては
個別の引数を使う($1)
doskey cdd=cd /d $1
cdd D:\Work と入力すると、ドライブをまたいで D:\Work に移動できます。
複数のコマンドを連結する($T)
doskey mkcd=mkdir $1 $T cd $1
mkcd test と入力すると、フォルダ test を作成してから、そのフォルダに移動します。$T で連結したコマンドは、前のコマンドが失敗しても続けて実行されます。
「前のコマンドが成功したときだけ次を実行する」&& を使いたい場合は、$T$T と書きます。フォルダ作成の例は
マクロの一覧を表示する
登録済みのマクロは /macros(省略形は /m)で確認できます。
doskey /macros
マクロを削除する
マクロを削除するには、= の右側を空にして定義します。
doskey ls=
マクロはウィンドウを閉じると消える
DOSKEY で登録したマクロは、そのコマンドプロンプトのウィンドウ内でのみ有効です。ウィンドウを閉じると消えてしまうため、毎回登録し直す必要があります。
これを避けるには、マクロの定義をファイルに保存し、起動時に読み込ませます。
マクロをファイルに保存する
現在のマクロを /macros の出力としてファイルに書き出せます。リダイレクトについては
doskey /macros > %USERPROFILE%\macros.doskey
ファイルは、次のように 1 行に 1 マクロを 名前=コマンド の形式で書いたテキストファイルです。メモ帳などで直接編集して構いません。
ls=dir $*
ll=dir /a /o:-d $*
cdd=cd /d $1
mkcd=mkdir $1 $T cd $1
/macros の出力は、日本語版 Windows では Shift_JIS 系(コードページ 932)で保存されます。メモ帳などで編集して保存し直す場合は、文字コードを ANSI にするか、BOM なしの UTF-8 にしてください。文字コードについては
ファイルからマクロを読み込む
/macrofile オプションでファイルを指定すると、まとめて登録できます。
doskey /macrofile=%USERPROFILE%\macros.doskey
起動時に自動で読み込む
コマンドプロンプトを開くたびに自動で読み込ませたい場合は、ショートカットのリンク先を次のように変更する方法が手軽です。
%windir%\system32\cmd.exe /k doskey /macrofile=C:\Users\user\macros.doskey
user の部分はご自身のユーザー名に置き換えてください。/k は、指定したコマンドを実行した後もウィンドウを閉じずに残すオプションです。
レジストリの HKCU\Software\Microsoft\Command Processor にある AutoRun 値にコマンドを設定すると、すべてのコマンドプロンプト起動時に自動実行されます。ただし、バッチファイルなどから起動された cmd にも影響するため、予期しない動作の原因になることがあります。設定する場合は、元に戻せるよう、変更前の値を控えておいてください。まずは上記のショートカットを使う方法をおすすめします。
コマンド履歴の管理
DOSKEY はマクロのほか、コマンド履歴も管理しています。履歴を表示する /history については
| オプション | 説明 |
|---|---|
/history | 保存されているコマンド履歴を表示する |
/listsize=n | 保存するコマンド履歴の件数を n 件にする |
/macros | マクロを一覧表示する |
/macros:all | 起動中のすべての実行ファイル(cmd 以外を含む)のマクロを表示 |
/macrofile=ファイル | ファイルからマクロを読み込む |
/reinstall | DOSKEY の新しいインスタンスを起動し、履歴バッファを消去する |
doskey /listsize=100
実践例:よく使う操作をまとめて登録する
開発作業でよく使うマクロをまとめた例です。
ls=dir $*
ll=dir /a /o:-d $*
cdd=cd /d $1
mkcd=mkdir $1 $T cd $1
which=where $*
ip=ipconfig $*
which で
ip で を短く呼び出せるようにしています。
DOSKEY のマクロは、コマンドプロンプト(cmd.exe)の機能です。PowerShell では Set-Alias や関数など、別の仕組みを使います。
まとめ
| 操作 | コマンド |
|---|---|
| マクロを登録 | doskey 名前=コマンド |
| すべての引数を渡す | $* |
| 複数のコマンドを連結 | $T |
| マクロを一覧表示 | doskey /macros |
| マクロを削除 | doskey 名前= |
| ファイルに保存 | doskey /macros > ファイル |
| ファイルから読み込む | doskey /macrofile=ファイル |