Go言語で外部プログラムを動かしたい。検索したらこんなのみっけ。
https://qiita.com/tanksuzuki/items/9205ff70c57c4c03b5e5
ワタクシのDELL OPTIPLEX 7010SFF Win 11(非推奨PC) + VScodeでは動作しない。その後にエラー処理入れたら次のようなメッセージが出た。
exec: "sleep": executable file not found in %PATH%
これは何を意味するあるか、ちみぃ。ここがね、VScode Terminalで
> sleep 5 と叩くと 5秒間反応ないのよ。つまりsleepしたのだよ。ということは、pathは通っているのだよ。sleepって C:\Windows\System32 にあるのでね。そこはPath通っているのだよ。環境変数のところ見ただす。
Terminalで > sleep 5 と叩いて動いたのだから PATHはあるのだよ、ちみぃ。
だけどエラー処理つけたら ないぞって言うのだよ、ちみぃ。。どないなってんのよそ。
ちなみに Terminal で bash と叩いてUbuntuにして
>go run main.go
とやったら正常に動作したのでして。
ワイのWin 11で動作しない。Terminalで >sleep 5 と叩くと動作するのでpathはあるはず!!
ところが、どっこい。
> where sleep*.* では何も出てこない。
Terminalを cmd に変更してから
> where sleep*.* で 何も出てこない。次のように出た
情報: 与えられたパターンのファイルが見つかりませんでした。
> where notepad*.*
C:\Windows\System32\notepad.exe 出てきた。そして、上のコードでsleep をnotepadにして試したら起動した。
というわけです。で?
疑問 Terminal で > sleep 5 と叩くと5秒反応がないので動いとる。しかーーし、DOS窓で
C:\Users\*****>sleep 5
'sleep' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
つまり、DOS窓ではPATHが通ってないので動かない。うむむむの ムー さん登場。
上のコードが動かないのは sleep にPATHがないからだ・・・・とメッセージが言うとる通りなのである事は理解した。
だが、どうして VScode Terminalで > sleep 5 が動くのかいな?
VScodeのTerminalは DOS窓と同じではないのか? そこだな。
よーし、ちゃったーず 活用だ。
わかったこと c:\Windows\System32 を探したら sleep.exeはなかった。いつから無くなったのか知らんけど。notepad.exeはあったので上のコードで起動したのは分かった。
では、VScode Terminalで > sleep 5 は動いたぞ、それはどこにあるのだ?
VScodeのTerminalで次のように
> sleep -?
NAME
Start-Sleep
SYNTAX
Start-Sleep [-Seconds] <double> [<CommonParameters>]
Start-Sleep -Milliseconds <int> [<CommonParameters>]
Start-Sleep [-Duration] <timespan> [<CommonParameters>]
ALIASES
sleep
cmd Windowsではダメで PowerShellでなら動くのか?
PS > sleep 5 とやったら動いた。 Start-Sleepでも良い。
するってーと、上のコードではどうかけば良いのだ? cmd windowsでは sleep, Start-Sleepともにないって言われたし。
Bingチャットに訊いたら次の回答があったので試したら動いた
cmd := exec.Command("powershell", "-Command", "Start-Sleep -Seconds 5")
ま~一件落着ですね。うむうむ。
VScode Terminalはデフォで PowerShellなのですわ(´・ω・`)
しかし、なんだな。参考サイトは新しいのがいいぞ。古いのはダーーミ。
posted by toinohni at 09:45| 東京 🌁|
Comment(0)
|
ソフト系雑学
|
|