at backyard

Color my life with the chaos of trouble.

windows環境にて Goのexec.Commandを実行した際に exec: "start": executable file not found in %PATH%

windows環境にて Goのexec.Command経由で start コマンドを実行した際に

exec: "start": executable file not found in %PATH%

というエラーが出たので解決方法をメモ。

目次

goのexec.Command経由で startコマンドを実行する方法

以下のコマンドを実行した。
(コード内容は簡略化しています)

exec.Command("start", "<Excelファイルのパス>")

すると以下のようなエラーとなった。

exec: "start": executable file not found in %PATH%

これについては以前Node.jsで同じようなことをした際に一度調べた気がしたのですぐに解決できそうな気がしたが、その時に調べた情報源にたどり着けず、記憶を頼りに下記のようにたどり着いた。

args := []string{"/c", "start", "<Excelファイルのパス>"}
exec.Command("cmd", args...)

これでOK。

以下のようなコマンドを実行する形となる。

cmd /c start <Excelファイルのパス>

Explorerを開く場合に explorerコマンドを使うとexit status 1が返ってくる(原因は未調査)

以下は、上と似たようなことをやろうとして、windowsexplorerを開こうと explorer コマンドを使おうとした際に遭遇した事象。

args := []string{"/c", "explorer", "開きたいフォルダパス"}
exec.Command("cmd", args...)

これだとexit status 1となる。
が正常にフォルダは開かれ、一見挙動としては問題なさそう。

試しに下記のようにやってみたら

args := []string{"/c", "start", "開きたいフォルダパス"}
exec.Command("cmd", args...)

今度はエラーなく開かれた。

explorer でも start でもやりたいことは実現できるので良いのだが、実際に2つのコマンドの細かな違いなどは調べられていないので、そのうち調べてみようと思う。
というわけでこの挙動はまだ追えていない。

ひとまずメモだけ残しておく。