プログラミング

WSLのbashからWindowsの実行ファイルを実行する

通常、WSLではwindowsアプリケーションを起動することが可能です。可能になりました。

$ explorer.exe .
$ calc.exe

しかし、
autohotkeyなど、一部のソフトウェアでは、エラーが出てしまったりすることもあるようです。

script file not found.

解決法を考えた結果、以下のコマンドで可能であることが分かりました。

cmd.exe /C "C:\Program Files\AutoHotkey\AutoHotkeyU64.exe" C:/pg/autohotkey/your_script.ahk

次のようなエラーが出てしまう場合、おそらく、C:と書かなければいけない部分を、/mnt/のように書いてしまっているのではないでしょうか。

The system cannot find the path specified.

また、このコードだと、実行したファイルが終了しても、コマンドラインが進みません。
シェルスクリプトなどで利用する場合、ファイルを分けてやる必要があるということです。

shellScript.sh

. cmd.sh &

cmd.sh

cmd.exe /C "C:\Program Files\AutoHotkey\AutoHotkeyU64.exe" C:/pg/autohotkey/per5_printScreen.ahk

&: こうしてやることで、バッググラウンドプロセスとして別のシェルスクリプトを実行します。