exec.Command(“date”)无法找到date命令

时间:2013-10-25 00:44:28

标签: go

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%

中找不到可执行文件

如何让命令工作?我是否需要设置路径或写出命令的完整路径?

2 个答案:

答案 0 :(得分:4)

可悲的是,除非你从某处获得date.exe(Cygwin?)并将其放入%PATH%,否则这个例子对你不起作用。

我相信,正在发生的事情是date是Powershell内置的。它适用于你,因为你的shell正在解释它。

你可以做到

out, err := exec.Command("cmd", "/C", "date").Output()

建议here;我不知道,我没有方便的Windows机器。


旁注:

  

Get-Command日期显示“术语'日期'未被识别为cmdlet的名称”

该短语恰好有两个Google结果。其中一个引导我this,这帮助我解决了这个问题。

答案 1 :(得分:2)

在Windows上,因为日期不是可执行文件,所以我将代码更改为如下运行:

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