golang:在Windows上运行pdf文件的默认应用程序

top*_*kip 7 windows go

我想在文件系统中使用默认应用程序打开PDF文件.我怎样才能做到这一点?从命令行我只需编写pdf文件的文件名,然后打开应用程序(带有请求的文件).当我尝试使用时,exec.Command()我得到一个错误(不足为奇)exec: "foo.pdf": executable file not found in %PATH%.

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)
    }

}
Run Code Online (Sandbox Code Playgroud)

kos*_*tix 12

exec.Command("rundll32.exe", "url.dll,FileProtocolHandler", "path_to_foo.pdf")
Run Code Online (Sandbox Code Playgroud)

还应该处理它.

请注意,仍然正确的方法是使用围绕ShellExecute()导出的API函数的C包装器shell32.dll,并且"w32"库似乎立即提供此包装器.

  • 即使文件名中包含空格,此方法也有效 (3认同)

Den*_*ret 4

您必须启动cmd /C start foo.pdf. 这将使启动命令找到适合您的正确可执行文件。

cmd := exec.Command("cmd", "/C start path_to_foo.pdf")
Run Code Online (Sandbox Code Playgroud)