英文:
exec.Command("date") not able to find date command
问题
以下是代码的中文翻译:
package main
import (
"fmt"
"log"
"os/exec"
)
func main() {
out, err := exec.Command("date").Output()
if err != nil {
log.Fatal(err)
}
fmt.Printf("The date is %s\n", out)
}
这是一个执行系统命令的文档示例代码。http://golang.org/pkg/os/exec/#example_Cmd_Output 即使在文档网站上,示例执行框也无法运行,并显示相同的错误:
2009/11/10 23:00:00 exec: "date": 在 $PATH 中找不到可执行文件
在 Windows 上,我得到的错误是:
exec: "date": 在 %PATH% 中找不到可执行文件
如何使命令正常工作?我需要设置路径或写出命令的完整路径吗?
英文:
package main
import (
"fmt"
"log"
"os/exec"
)
func main() {
out, err := exec.Command("date").Output()
if err != nil {
log.Fatal(err)
}
fmt.Printf("The date is %s\n", out)
}
This is a code example from the documentation for executing system commands. http://golang.org/pkg/os/exec/#example_Cmd_Output Even on the documentation site the example execute box doesn't run and has the same error:
2009/11/10 23:00:00 exec: "date": executable file not found in $PATH
On Windows I get:
exec: "date": executable file not found in %PATH%
How do I get commands to work? Do I need to set a path or write out the full path of the command?
答案1
得分: 4
很遗憾,除非你从某个地方(比如Cygwin)获取一个date.exe
并将其放在%PATH%
中,否则这个示例对你来说是行不通的。
我认为问题出在于date
在Powershell中是一个内置命令。它对你起作用是因为你的shell正在解释它。
你可以尝试执行以下命令:
out, err := exec.Command("cmd", "/C", "date").Output()
参考这里的建议;不过我不确定,因为我手边没有Windows机器。
附注:
> Get-Command date显示“未将名称为'date'的 cmdlet 识别为 cmdlet 的名称”
这个短语在谷歌上只有两个结果。其中一个结果引导我到了这里,帮助我解决了这个问题。
英文:
Sadly, that example isn't going to work for you unless you get a date.exe
from somewhere (Cygwin?) and put in on your %PATH%
.
What's going on, I believe, is that date
is a builtin in Powershell. It works for you because your shell is interpreting it.
You may be able to do
out, err := exec.Command("cmd", "/C", "date").Output()
as suggested here; I don't know, I don't have a Windows machine handy.
Sidenote:
> Get-Command date says "The term 'date' is not recognized as the name of a cmdlet"
There are exactly two Google results for that phrase. One of them leads me to this, which helped me figure this out.
答案2
得分: 2
在Windows上,由于date
不是一个可执行文件,我将你的代码修改为以下方式运行:
out, err := exec.Command("cmd.exe", "/c date /t").Output()
if err != nil {
log.Fatal(err)
}
fmt.Printf("The date is %s\n", out)
输出结果为:
The date is Fri 25/10/2013
英文:
On windows since date is not a executable, I changed your code to run as follows:
out, err := exec.Command("cmd.exe", " /c date /t").Output()
if err != nil {
log.Fatal(err)
}
fmt.Printf("The date is %s\n", out)
The output:
The date is Fri 25/10/2013
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论