2012-08-22 16 views
6

पर पीडीएफ फ़ाइल के लिए डिफ़ॉल्ट एप्लिकेशन चलाएं मैं फाइल सिस्टम में डिफ़ॉल्ट एप्लिकेशन के साथ जाने से पीडीएफ फाइल खोलना चाहता हूं। मैं उसे कैसे कर सकता हूँ? कमांड लाइन से मैं सिर्फ पीडीएफ फ़ाइल का फ़ाइल नाम लिखता हूं और एप्लिकेशन खुलता है (अनुरोधित फ़ाइल के साथ)। जब मैं 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) 
    } 

} 

उत्तर

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 देखें लेकिन मुझे कमांड में मैन्युअल रूप से दर्ज होने पर भी आदेश में ठीक से काम करने का आदेश नहीं मिला। – Shannon

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

भी इसे संभाल चाहिए।

ध्यान दें कि अभी भी सही तरीके से यह करने के लिए ShellExecute() एपीआई shell32.dll द्वारा निर्यात समारोह के चारों ओर एक सी आवरण का उपयोग करना है, और "w32" library अभी इस आवरण प्रदान करने के लिए लगता है।

+3

यह विधि तब भी काम करती है जब फ़ाइल नाम में रिक्त स्थान हो – Carl

संबंधित मुद्दे