3
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": executable file not found in %PATH%

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

4

2 回答 2

4

可悲的是,除非您date.exe从某个地方(Cygwin?)获得一个并放入您的%PATH%.

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

你也许可以做

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

正如这里建议的那样;我不知道,我手边没有 Windows 机器。


边注:

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

该短语恰好有两个谷歌搜索结果。其中一个将我引向这个,这帮助我解决了这个问题。

于 2013-10-25T01:20:08.253 回答
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
于 2013-10-25T01:22:29.570 回答