コマンドプロンプトをLinuxみたいに！alias(doskey)登録と永続化

#はじめに
今回はコマンドプロンプトで`ls`や`pwd`, `touch`コマンドを使えるようにしていきたいと思います。
基本的にwsl上で作業している主ですが、`pyinstaller`で作成したexeファイルをWindows使用する都合上、windowsでの作業をしなくてはいけなくなり、いっそのことalias登録しておこうという気持ちになりました。[^1]


#環境
```
Windows10
```

#aliasの登録, 永続化
###1. alias用ファイルを作成
`C:\Users\user`といった任意の場所に、doskey(Linuxで言うalias)を記述するためのテキストファイル`alias.txt`などを作成します。

###2. aliasの登録
テキストファイルに登録したいdoskeyを記述します。

```text
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%
touch=type nul > $*
tree=tree /f $b more
unalias=doskey $*=
diff=fc /N $*
mkvenv=py -m venv .\py3env
venvup=.\py3env\Scripts\activate.bat
```
ここで、最後の2つは`python venv`を使わない人は記述しなくていいです。
少し使うのが楽になるって程度の記述です。

###3. aliasの永続化
レジストリ エディターを開いて、
`HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor`、
`HKEY_CURRENT_USER\Software\Microsoft\Command Processor`
のどちらかを探し、

`右クリック`>`新規`>`文字列値`を
`AutoRun`で追加します。

`右クリック`>`編集`>`値`を
`doskey /macrofile=%USERPROFILE%\alias.txt`とします。

ここで
`%USERPROFILE%\alias.txt`とは
`C:\Users\user\alias.txt`のことを指しています。

以下に、流れを把握するための画像を折りたたみいれています。

<details><summary>:point_up_tone2:レジストリ エディターの開き方</summary>
Windowsキーを押下し、`レジストリ エディター`
と検索するとレジストリ エディタ－がヒットします</details>
<details><summary>:v_tone2:AutoRun設定までの流れ</summary>![AutoRun設定](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/506931/f9145b63-6a0d-c48f-ab1f-f939ee79da88.png)
設定後にAutoRunの上で
`右クリック`>`編集`で値を自分のaliasのファイルがある階層までのパスとする。
![値の登録](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/506931/e6b9698f-6826-36b1-5eb9-57edd3f84b1a.png)
</details>
このようにすることで、コマンドプロンプト起動時にAutoRunが読み込まれ、aliasが適用されるはずです。

今度は、作成したテキストファイルに追加していくことで、aliasを増やしていけます。

###4. 使ってみた
・`ls`>`touch`>`ls`

```bash
C:\Users\user>ls
 ドライブ C のボリューム ラベルは Local Disk です
 ボリューム シリアル番号は ****-**** です

 C:\Users\user のディレクトリ

[.]              [..]             [.pylint.d]      [.vagrant.d]     [.VirtualBox]    [.vscode]        [3D Objects]
[alias]          [Apple]          [Contacts]       [Desktop]        [Documents]      [Downloads]      [Favorites]
[Links]          [Music]          [OneDrive]       [Pictures]       [Saved Games]    [Searches]       [vagrant]
[Videos]         [VirtualBox VMs] [workspase]
               0 個のファイル                   0 バイト
              24 個のディレクトリ  109,748,617,216 バイトの空き領域

C:\Users\user>touch test.txt

C:\Users\user>ls
 ドライブ C のボリューム ラベルは Local Disk です
 ボリューム シリアル番号は ****-**** です

 C:\Users\user のディレクトリ

[.]              [..]             [.pylint.d]      [.vagrant.d]     [.VirtualBox]    [.vscode]        [3D Objects]
[alias]          [Apple]          [Contacts]       [Desktop]        [Documents]      [Downloads]      [Favorites]
[Links]          [Music]          [OneDrive]       [Pictures]       [Saved Games]    [Searches]       test.txt
[vagrant]        [Videos]         [VirtualBox VMs] [workspase]
               1 個のファイル                   0 バイト
              24 個のディレクトリ  109,748,621,312 バイトの空き領域
```

ちゃんと追加されました。

・`alias`

```bash
C:\Users\user>alias
cat=type $*
alias=if "$1"=="" (doskey /macros) else (doskey $*)
cp=copy $*
ll=dir /ad
h=doskey /history
lv=more /E $*
history=doskey /history
ls=dir /w
mv=move $*
pwd=echo %CD%
touch=type nul > $*
unalias=doskey $*=
tree=tree /f $b more
mkvenv=py -m venv .\py3env
venvup=.\py3env\Scripts\activate.bat
```
本来コマンドプロンプトでは使えないaliasコマンドも使えました。

#おわりに
うまくできましたか？

ちなみに登録しなくともコマンドプロンプトでは
lsコマンドは`dir`コマンド
aliasコマンドは`doskey /macros`コマンド
で実行できます。

ただUbuntuなどになれている人はコマンドプロンプトに移ってきてびっくりしたことがあると思います。
変数の設定などが少しLinuxのaliasとは違って戸惑うと思いますが、独自に追加してみてください。

少しでも参考になればと思います！

それでは:wave:

#参考
- [Windows コマンドに Linux 風なエイリアスを登録して永続化させる](https://neos21.hatenablog.com/entry/2016/01/19/031150)
[^1]: pyinstallerはクロスコンパイラではないためWindows用のexeファイルはwidows上でコンパイルしなければいけないらしい