Связывание с файлами в сетевой папке Windows

Как я могу ссылаться на файлы на сетевых дисках в среде Windows из организационного режима?

Я получаю сообщение об ошибке:

eval: Ошибка ShellExecute: система не может найти указанный файл.

с такой ссылкой:

[[//общий/путь/к/файлу.csv]]


person wdkrnls    schedule 19.07.2012    source источник


Ответы (3)


У меня тоже была такая же проблема. Я проследил это до того, как org-open-at-point преобразовал PATH во что-то, что w32-shell-execute не может открыть. Используя дефадвице ниже, я могу открыть // и \ сетевые пути.

(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, в организационном режиме 7.9.11.

Изменить: комментарий о том, что «Однако для меня большой вариант использования — это открытие других типов файлов (например, файлов MS Office)», работает для меня, когда я добавляю следующие ассоциации в org-mode. Я могу открыть Microsoft Word, Excel и т. д., используя обычные URL-адреса организационного режима, такие как [[\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:]]".

person piyo    schedule 24.09.2012
comment
Это хорошо работает для открытия текстовых файлов через общие ресурсы. Спасибо большое! Тем не менее, для меня важным вариантом использования является открытие других типов файлов (например, файлов MS Office) с гиперссылками [[file+sys:]]. Эти типы ссылок по-прежнему сталкиваются с той же проблемой. - person wdkrnls; 26.09.2012

Некоторые части Windows и некоторые приложения Windows не поддерживают пути UNC. Emacs это делает, но похоже, что вы (или org-mode) пытаетесь выполнить какую-то программу, а не просто используете find-file для просмотра файла в Emacs. Обходной путь — смонтировать //share/path как X: и использовать [[X:/to/file.csv]] в качестве ссылки.

person JSON    schedule 20.07.2012

Если ваш путь UNC включает один из административных общих ресурсов, связанных с драйверами удаленных дисков (например, \server\c$ или \server\d$, вам нужно удвоить $ после буквы диска, чтобы они выглядели как \server \c$$ или \сервер\d$$

person Howard West    schedule 20.07.2012