まとめ
- WindowsのWSL上で、カレントディレクトリを、Windowsのエクスプローラーで開くには、以下のようにします。
cmd.exe /C "start `wslpath -w .`"
- Windows上で、ファイルを、関連付けられたアプリで開くには、以下のようにします。
- たとえば、画像ファイルを画像ビューワーで開くには、以下のようにします。
cmd.exe /C "start `wslpath -w ./abc.jpg`"
解説
上記の内容を、部分部分に分けて、解説します。前から順に説明すると難しいので、後ろから順に説明します。
wsl上のpathをwindowsのpathに変換
後ろから3文字目の.
は、カレントディレクトリを表しています。wsl上でpwdしたときに表示される、現在のディレクトリですね。
このカレントディレクトリを
wslpath -w .
を実行して、wsl上のpathをwindows上のpathに変換します。
このwslpathの実行は、バッククォート文字「`」で囲まれているので、wsl上のbashによってcmd.exeを実行するよりも前に実行されて実行結果の文字列に置き換わります。
たとえば、wsl上で/mnt/c
はwindows上のC:\
なので、実際にwslpathを実行してみると以下のようになります。
$ pwd
/mnt/c
$ wslpath -w .
C:\
コマンドプロンプト上でエクスプローラーの起動
windowsのコマンドプロンプトでは、startコマンドにpathを指定すると、そのpathがエクスプローラーで開きます。
Microsoft Windows [Version 10.0.19044.1526]
(c) Microsoft Corporation. All rights reserved.
C:\>start c:\
C:\>
wslからエクスプローラーを起動
上記で説明した「wsl上のpathをwindowsのpathに変換」と「コマンドプロンプト上でエクスプローラーの起動」を組み合わせます。
- コマンドの実行
cmd.exe /C
- Windows コマンドインタープリター(コマンドプロンプト)を開始させます。
-
-C
は、起動オプションで、次の文字列をコマンドとして実行して終了させることを指定しています。
-
start `wslpath -w .`
- startで、指定されたプログラムまたはコマンドを実行するためにウィンドウを開きます。pathが指定された場合は、そのパスをエクスプローラーで開きます。
- バッククォートで囲まれた部分がcmd.exeを実行する前にwsl上のbashによって先に実行されて、カレントディレクトリのpathをwindows上のpathに変換した文字列に置き換わっています。