链接到Windows网络共享上的文件

时间:2012-07-19 02:32:18

标签: windows emacs org-mode network-share

如何从Org-mode链接到Windows环境中的网络驱动器上的文件?

我收到错误:

  

eval:ShellExecute失败:系统找不到指定的文件。

有这种链接:

  

[[//份额/路径/到/ FILE.CSV]]

3 个答案:

答案 0 :(得分:2)

我也有同样的问题。我将其追踪到 org-open-at-point 将PATH转换为 w32-shell-execute 无法打开的内容。使用下面的defadvice,我可以打开//和\ network路径。

(defadvice w32-shell-execute (around 
                              workaround-for-org-w32-shell-execute
                              activate)
  "Replace w32-shell-execute PATH directory seperators to Windows
backslash when PATH starts with '//' (i.e. Network path). This
allows allowing org-mode links in org-mode files like
[[\\\\myserver\\mypath\\mydoc.doc][mydoc.doc]] to be opened by
org-open-at-point. Forward slashes / are also accepted.

org-open-at-point transforms the links to //../../ but
unfortunately w32-shell-execute does not accept that."
  (let ((operation (ad-get-arg 0))
        (path      (ad-get-arg 1)))
    (when (and (string-equal operation "open")
               (eql (string-match "//" path 0) 0))
      (setq path (replace-regexp-in-string "/" "\\\\" path))
      ;; debug (message "Opening %s" path)
      (ad-set-arg 1 path))
    ad-do-it))

尝试[[//127.0.0.1/c $$]]

这是一个快速而又脏的修复,但“它可以在我的机器上运行”。

在Emacs 24.2,Org-mode 7.9.11上验证。

编辑:评论“然而,对我来说,一个很大的用例是打开其他类型的文件(例如MS Office文件)”,当我将以下关联添加到org-mode时,对我有用。我可以使用普通的组织模式网址打开Microsoft Word,Excel等,如[[\ server \ share \ piyo.doc]]

(mapc (lambda (file-name-matcher)
    (add-to-list 'org-file-apps
                 (cons file-name-matcher 'default) 'append))
  (list "\\.doc\\'"
        "\\.xls\\'"
        "\\.ppt\\'"))

编辑:关于“[[file + sys:]]”的评论是“通过操作系统打开[文件],如双击”,这可以通过上述关联实现。在我的Windows计算机上,我不需要“[[file + sys:]]”。

答案 1 :(得分:1)

Windows的某些部分和某些Windows应用程序不支持UNC路径。 Emacs确实如此,但看起来你(或org-mode)正试图执行一些程序,而不是简单地使用find-file来查看Emacs中的文件。解决方法是将//share/path安装为X:并使用[[X:/to/file.csv]]作为您的链接。

答案 2 :(得分:0)

如果您的UNC路径恰好包含与远程磁盘驱动程序关联的一个管理共享(例如\ server \ c $或\ server \ d $,则需要​​在光盘字母后加倍$,以便它们看起来像例如\ server \ c $$或\ server \ d $$