2012-08-22 2 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") 

는 그것을 처리해야합니다. 여전히 올바른 방법으로 그것을 할

참고 shell32.dll 내 보낸 ShellExecute() API 함수 주위 C 래퍼를 사용하는 것입니다, 그리고 "w32" library 바로이 래퍼를 제공 할 것으로 보인다.

+3

이 방법은 파일 이름에 공백이 있어도 작동합니다. – Carl

관련 문제