PowerShell からコマンドプロンプトのインタープリタコマンドの呼び出し

以下は拡張子関連付けの例である。

$ cmd /c assoc .mkv
.mkv=VLC.mkv
$ cmd /c ftype VLC.mkv
VLC.mkv=C:\Users\tomoyan\scoop\apps\vlc\current\vlc.exe "%1"

拡張子関連付けの変更。

$ sudo cmd /c assoc .mkv=VLC.mkv
.mkv=VLC.mkv

この実行結果に基づいて…

$ cmd /c echo '"Hello!"'
"Hello!"

拡張子関連付けを更新する。

$ sudo cmd /c ftype VLC.mkv=%USERPROFILE%\scoop\apps\vlc\current\vlc.exe '"%1"'
VLC.mkv=C:\Users\tomoyan\scoop\apps\vlc\current\vlc.exe %1

%1(ダブルクォーテーション)で括られない。

この実行結果に基づいて…

$ cmd /c echo "`"Hello!`""
"Hello!"

拡張子関連付けを更新する。

$ sudo cmd /c ftype VLC.mkv=%USERPROFILE%\scoop\apps\vlc\current\vlc.exe "`"%1`""
VLC.mkv=C:\Users\tomoyan\scoop\apps\vlc\current\vlc.exe %1

※これも %1(ダブルクォーテーション)で括られない。

仕方ないので以下のように実行する。

$ sudo cmd /k
> ftype VLC.mkv=%USERPROFILE%\scoop\apps\vlc\current\vlc.exe "%1"
VLC.mkv=C:\Users\tomoyan\scoop\apps\vlc\current\vlc.exe "%1"

※これは当然上手く行く。

なにかのバグを踏んでますかねぇ❓😅💦💦💦

参考文献

絶対に正しいコマンドラインが失敗して大いに悩む (2/2):その知識、ホントに正しい? Windowsにまつわる都市伝説(46) - @IT