2012-03-28 4 views
6

私はemacsでウィンドウズ上でいくつかのことを試しています。私の場合は、elispのバックスラッシュでファイルパスを返す必要があります。しかし、elispは常にスラッシュなどでパスを返します。elispからバックスラッシュでウィンドウパスを取得する方法

(expand-file-name "text.log" "d:\\ProgramData\\temp") 
=> d:/ProgramData/temp/text.log 

私の要件:

(expand-file-name "text.log" "d:\\ProgramData\\temp") 
=> d:\ProgramData\temp\text.log 

これは、正規表現で行うことができますが、私はもっと簡単な方法が必要です。

答えて

7

convert-standard-filename(elisp) Standard File Namesが必要ですか?

+0

これは 'convert-standard-filename'の意図された使用ではないので、場合によっては失敗することがあります(たとえば、同じファイルを参照しない名前を返すなど)。 – Stefan

+0

@スティファン:合意。しかし、私もluozengbinの目的を理解していません.WindowsのEmacsといくつかのツールはスラッシュにも対応できるからです。そのようなシステムでは、 'converter-standard-filename'は別のファイル名を返します。元のファイル名は無効です。 luozengbinがこの名前を他のツールに渡したい場合、名前の変更が正しい動作である可能性があります。 – OwnWaterloo

+0

こんにちは。助けてくれてありがとう。私は他のtools.butにファイル名を渡したいが、私はそれを変換する必要がposix path.soをサポートしていません。 – luozengbin

5

もちろん(subst-char-in-string ?/ ?\\ <file>)はすべきことです。しかし、スラッシュはWindowsのほぼすべての場所で動作することに注意してください(私が知っている唯一のツールは、デフォルトの "shell"(command.com、cmd.exe、またはそのような名前)です)。この変換が必要です。