2012-08-22 144 views
6

我想從默認應用程序中打開文件系統中的PDF文件。我怎樣才能做到這一點?從命令行我只寫了PDF文件的文件名,應用程序打開(與請求的文件)。當我嘗試使用exec.Command()時,出現錯誤(不奇怪)exec: "foo.pdf": executable file not found in %PATH%golang:在Windows上運行pdf文件的默認應用程序

package main 

import (
    "log" 
    "os/exec" 
) 

func main() { 
    cmd := exec.Command("foo.pdf") 
    err := cmd.Start() 
    if err != nil { 
     log.Fatal(err) 
    } 
    err = cmd.Wait() 
    if err != nil { 
     log.Fatal(err) 
    } 

} 

回答

1

您必須啓動cmd /C start foo.pdf。這將使啓動命令爲您找到正確的可執行文件。

cmd := exec.Command("cmd", "/C start path_to_foo.pdf") 
+0

如果文件名中有空格,此方法不起作用 – Carl

+0

我認爲應該可以用空格打開一個文件名。請參閱http://stackoverflow.com/a/13692919/395461但是我無法讓命令在Go中正常工作,即使在命令行上手動輸入時也是如此。 – Shannon

11
exec.Command("rundll32.exe", "url.dll,FileProtocolHandler", "path_to_foo.pdf") 

也應當予以受理。

注意,仍然是正確的方式做它是使用C包裝由左右出口shell32.dllShellExecute() API函數和"w32" library似乎提供了此包裝的時候了。

+3

即使文件名中有空格,此方法也可以使用 – Carl

相關問題