2012-03-28 74 views
6

我正在用emacs在windows上嘗試一些東西。在我的情況下,我需要返回來自elisp的反斜槓的文件路徑。但elisp總是用斜線返回路徑等。如何從elisp獲得帶有反斜槓的Windows路徑

(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 2012-03-28 14:56:26

+0

@Stefan:同意。但我也不明白羅曾斌的目的,因爲Emacs和Windows中的一些工具也可以處理斜槓。在這樣的系統中'converter-standard-filename'將返回一個不同的文件名,原始文件名無效。如果羅增斌想把這個名字傳給其他工具,那麼重命名可能是正確的行爲。 – OwnWaterloo 2012-03-28 22:10:43

+0

嗨。感謝您的幫助。我想通過文件名到其他工具,但工具不支持posix path.so我需要轉換它。 – luozengbin 2012-03-29 01:49:23

5

當然(subst-char-in-string ?/ ?\\ <file>)應該做的伎倆。但是請注意,斜線在Windows中幾乎在任何地方都能正常工作(我知道,不支持它們的唯一工具是默認的「shell」(command.com,cmd.exe或其他名稱)),所以也許你甚至都不會需要這種轉換。

相關問題