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が返ってくる(原因は未調査)
以下は、上と似たようなことをやろうとして、windowsのexplorerを開こうと explorer
コマンドを使おうとした際に遭遇した事象。
args := []string{"/c", "explorer", "開きたいフォルダパス"} exec.Command("cmd", args...)
これだとexit status 1となる。
が正常にフォルダは開かれ、一見挙動としては問題なさそう。
試しに下記のようにやってみたら
args := []string{"/c", "start", "開きたいフォルダパス"} exec.Command("cmd", args...)
今度はエラーなく開かれた。
explorer
でも start
でもやりたいことは実現できるので良いのだが、実際に2つのコマンドの細かな違いなどは調べられていないので、そのうち調べてみようと思う。
というわけでこの挙動はまだ追えていない。
ひとまずメモだけ残しておく。