コマンド【code】後コマンドプロンプトを閉じたい

VSCodeのコマンドcodeの話

コマンド【code】後コマンドプロンプトを閉じたい

VSCodeにはコマンドプロンプトから呼び出せるようにcodeというコマンドが用意されています。

1code .

と入力すれば現在のディレクトリをワークスペースとしてVSCodeを開けるので便利です。
しかしこの方法、VSCodeが開いてもコマンドプロンプトは起動したままです。
これは恐らくnanoやviみたいにCUIで操作する人が使うイメージを想定しているんだと思いますが、
バッチファイルなどの何らかの処理をcmdで返してVSCodeを起動したいだけの場合はコマンドプロンプトが残るのは邪魔でしかありません。
そこでVSCodeを起動したらコマンドプロンプトが閉じるようなコマンドを追加したいと思います。

解決方法

調べてみると同様のことがissueにありました。
要約すると
windowsの場合特に弄ってなければcodeを実行させている実態は以下の場所にあります。

1%LOCALAPPDATA%\Programs\Microsoft VS Code\bin
2フルパスは
3C:\Users\[ユーザー名]\AppData\Local\Programs\Microsoft VS Code\bin

そこにあるcode.cmdをコピーして適当にリネームします。
ここではcodeExit.cmdとします。
これをエディタなどで開いて5行目を修正する。

1"%~dp0..\Code.exe" "%~dp0..\resources\app\out\cli.js" %*
23start "" "%~dp0..\Code.exe" "%~dp0..\resources\app\out\cli.js" %*
4に変更する

これで完了
試しに

1codeExit .

というバッチを作成して実行するとVSCodeが開き、コマンドプロンプトは閉じてくれました。

念のため修正したところを解説すると
どうやら通常のcodeは(省略されていますが)callで呼んでいるみたいです。
callは呼んだルーチンが終了するのを待つのでVSCodeが閉じられるまでコマンドプロンプトが開きっぱなしということが起こります。
しかし、startで呼ぶと新しいプロセスとして実行されるため、VScodeを開く命令をしたあと最終行に到達し、コマンドプロンプトが閉じるということらしいです。
なお""の空文字は新しいプロセスを実行するときのウィンドウ名です。なので特に意味はありません。(但し、無くすことはできない)