2012-08-22 466 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

相关问题