2013-10-25 30 views
1
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高管:「日期」:$ PATH中找不到可執行文件exec.Command(「日期」)不能夠找到日期命令

在Windows上,我得到: exec:「date」:在%PATH中找不到可執行文件%

如何獲取命令的工作方式?我是否需要設置路徑或寫出命令的完整路徑?

+0

如果你打開一個終端,運行'date',它工作嗎? –

+0

是的。我得到2013年10月25日01:48:31。 – ApocSama

+2

嘗試運行'which date',然後將代碼中的'date'替換爲'date'可執行文件的全限定路徑。 (我意識到這不是你想要的長期,我只是想診斷。) –

回答

3

不幸的是,除非您從某處(Cygwin?)獲得date.exe並將其放入您的%PATH%,否則該示例不適用於您。

發生了什麼,我相信date是PowerShell中的內置函數。它適用於你,因爲你的shell正在解釋它。

您可以做

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

的建議here;我不知道,我沒有方便的Windows機器。


旁註:

Get-Command date says "The term 'date' is not recognized as the name of a cmdlet"

有整整兩個谷歌結果這句話。其中一個導致我this,這幫助我解決這個問題。

+0

謝謝,現在對我有意義。 – ApocSama

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