Org-mode から Windows 環境のネットワーク ドライブ上のファイルにリンクするにはどうすればよいですか?
エラーが発生します:
eval: ShellExecute に失敗しました: 指定されたファイルが見つかりません。
この種のリンクで:
[[//share/path/to/file.csv]]
Org-mode から Windows 環境のネットワーク ドライブ上のファイルにリンクするにはどうすればよいですか?
エラーが発生します:
eval: ShellExecute に失敗しました: 指定されたファイルが見つかりません。
この種のリンクで:
[[//share/path/to/file.csv]]
私も同じ問題を抱えていました。私はそれをorg-open-at-pointにたどり、PATHをw32-shell-executeが開けないものに変換しました。以下の defadvice を使用して、// および \ ネットワーク パスを開くことができます。
(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 に追加すると機能します。[[\server\share\piyo.doc]] のような通常の組織モードの URL を使用して、Microsoft Word、Excel などを開くことができます。
(mapc (lambda (file-name-matcher)
(add-to-list 'org-file-apps
(cons file-name-matcher 'default) 'append))
(list "\\.doc\\'"
"\\.xls\\'"
"\\.ppt\\'"))
編集:「[[file+sys:]]」についてのコメントは、「ダブルクリックのように OS 経由で [ファイル] を開く」であり、上記の関連付けで実現できます。私の Windows コンピュータでは、「[[file+sys:]]」は必要ありませんでした。
Windows の一部、および一部の Windows アプリケーションは、UNC パスをサポートしていません。Emacsはそうしますが、あなた(またはorg-mode)は、単にfind-fileを使用してEmacsでファイルを表示するのではなく、何らかのプログラムを実行しようとしているようです. 回避策は、マウントしてリンクとして//share/path
使用X:
することです。[[X:/to/file.csv]]
UNC パスに、リモート ディスク ドライバー (\server\c$ や \server\d$ など) に関連付けられた管理共有の 1 つが含まれている場合は、ディスク文字の後の $ を 2 倍にして、\server のようにする必要があります。 \c$$ または \server\d$$