Windows+Rに入れられるコマンド

#はじめに
Windows+Rというのは、WindowsキーとRキーの同時押しのこと。Windowsキーとは、Windows PCのキーボードにある`田`みたいなキー。
Windows+Rを押すと、「ファイル名を指定して実行」という機能が使える。例えば、`cmd`と指定して実行すると、コマンドプロンプトが開く。
Windows+Rで実行できる起動コマンドはたくさんあるのだが、それぞれのコマンドの意味が分からなかったのでまとめてみた。また、コマンドのショートカットを作る方法も紹介する。

#よく使うコマンド
まず、よく使うコマンドを
以下の表は、Windows+Rで出てくる「ファイル名を指定して実行」の検索窓に入れることで起動するコマンドである。まずは、よく使う機能を表にまとめる。実はこのコマンドは多岐にわたるので、一覧へのリンクもあとで紹介する。

|コマンド |実行内容 |
---|---
|\ |C:\を開く |
|calc |電卓の起動|
|cmd |コマンドプロンプトの起動|
|devmgmt.msc |デバイスマネージャーの起動|
|ms-settings: |設定の起動|
|ms-settings:display |設定>システム>ディスプレイの起動|
|ms-settings:sound |設定>システム>サウンドの起動|
|shell:desktop |デスクトップフォルダを開く|
|shell:programs |スタートメニューのプログラムがあるフォルダを開く(スタートメニューにアプリを追加したいときに使う)|
|shell:startup|スタートアップフォルダを開く(スタートアップアプリを追加で設定したいときに使う)|
|sysdm.cpl |システムのプロパティを開く(環境変数の設定で使う。Windows+breakでもできる)|
|taskmgr |タスクマネージャーの起動|

#コマンドの解説
##アプリケーションの実行コマンド
`calc`や`cmd`が何をしているのかというと、これはcalc.exe、cmd.exeを実行している。つまり、環境変数が通っているフォルダにあるexeファイルなら、その名前を打ち込むことで実行ができる。
ちなみに、calc.exe、cmd.exeはともに`C:\Windows\system32`に実体が存在している。Win+Rで`system32`と実行するとそのフォルダが開ける。

##shell:*
Windowsでは、内部システムの設定を「レジストリ」として管理している。レジストリにはOSの情報やアプリケーションの設定など様々な種類があるが、特定のフォルダや設定画面の名前付けもそのうちの一つである。
つまり、Widnowsの機能はそれぞれがシステムの内部で名前が決まっていて、それを`shell:`のあとに記述して呼び出すことができるのだ。
ではその名前はどこで定義されているのか。それは「レジストリエディタ」で確認・変更できる。これは高度な設定になるため、通常はアクセスができない。Win+Rで`regedit`と入力することで、レジストリエディタを起動することができる。
レジストリエディタを起動した後、`コンピューター\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions`の中の一つの項目を見ると、次のような画面が出る。
![regedit.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/404588/84799b14-4d52-902f-b26f-154c9ae5f210.png)
これはWindowsの既定フォルダの「ライブラリ」に関する設定。設定項目の「Name」という項目が、システム内部の名前である。つまり、`shell:Libraries`をファイル名として実行すれば、「ライブラリ」フォルダが開けることになる。
ここで設定されている内容の一覧は、[「Shell:」コマンドで開けるWindows10の特殊フォルダ等](https://www.hiskip.com/technique/microsoft/windows/win10/2221.html)に載っている。

##ms-settings:*
これは`shell:*`とは違い既定で全ての設定の名前が定義されているようだ。この名前をレジストリから変更することはできなさそう。
ms-settingの一覧は[Windows10の『設定』を開くコマンドms-settings:URLスキーム一覧リスト](https://qwerty.work/blog/2020/04/windows10-ms-settings-url-scheme.php)から確認できる。

##*.msc
mscはMicrosoft Common Console Documentのことで、Windowsの管理に関するファイルである。「Windows管理ツール」に入っているアプリなどをコマンドで呼び出すための名称。
このmscファイルの一覧は、[List of Windows commands .MSC](http://www.auditiait.es/en/list-of-commands-msc/)で見ることができる。

##*.cpl
cplはControl Panelのことで、コントロールパネルから設定できる画面を直接呼び出すことができる。
cplの一覧は[Description of Control Panel (.cpl) Files](https://support.microsoft.com/ja-jp/help/149648/description-of-control-panel-cpl-files)に載っている。

#自分でコマンドを設定する
さて、大量のコマンドがあることは分かったが、これらをすべて覚えておくことは無理である。また、よく使うコマンドはもっと少ない文字数で実行したい。そこで、Win+Rに打ち込むコマンドを自分で設定する方法も紹介する。
##うまくいく方法:バッチファイルを作る
拡張子なしで実行するには、ショートカットの起動をバッチファイルに書いてそのファイル名をコマンドにすればよい。
例えばこんなファイルを作ればよい。

```powershell:set.bat
start ms-settings:
```

これをPATHの通ったフォルダに保存して、「ファイル名を指定して実行」に`set`と入れるとコードが実行されて設定画面が開く。バッチファイルにすることで、拡張子をコマンドに含める必要がなくなる。
##うまくいかない方法:ショートカットを作る
他のサイトでは、コマンドをショートカットにするやり方がよく紹介されている。例えばショートカットの新規作成画面で、`ms-settings`をアドレスにすれば、そのアイコンをクリックするだけで設定画面が開くようになる。しかし、このやり方だとWin+Rからは呼び出すことができないのだ。
ms-settings:*やshell:*のようなURIは、ショートカットにすると*.urlというインターネットショートカットとして扱われる。そして、この拡張子は「ファイル名を指定して実行」で拡張子を省略して実行できない。また、環境変数のPATHEXTに省略したい拡張子を追加する方法(参考:[実行ファイルの拡張子を追加定義する](https://www.atmarkit.co.jp/fwin2k/win2ktips/842pathext/pathext.html))も、コマンドプロンプトだけでしか有効でないようだ。
ちなみに、URIではなくアプリ(exeなど)のショートカットは.lnkという拡張子になっていて、これは拡張子を省略して実行できる。なのでexeファイルのショートカットであればわざわざバッチファイルを作成する必要はない。
謎なのは、PATHEXTには.LNKは通っておらず、コマンドプロンプトでは.lnkファイルは拡張子を必要とする点だ。「ファイル名を指定して実行」で省略できる拡張子はどこを参照しているのか？少し調べてみたのだが全く分からなかった。「ファイル名を指定して実行」の実体であるexploere.exeの中身が見れないと分からないのかもしれない。

#まとめ
Windows+Rにより、作業の効率化が図れる。そのコマンドには色々なものがあり、それらはWindowsのレジストリや内部の既定値を調べることで実行できる。ただ、コマンドやファイル名が長いので、ショートカットとしてバッチファイルを自分で作成したほうがいい。