2012-03-28 12 views
6

Sto provando alcune cose su Windows con emacs. Nel mio caso, ho bisogno di restituire il percorso del file con backslash da elisp. Ma l'elisp restituisce sempre il percorso con una barra, ecc.Come ottenere il percorso di Windows con backslash da elisp

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

mia esigenza:

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

Può essere fatto con espressioni regolari, ma ho bisogno di molto più semplice.

risposta

7

convert-standard-filename in (elisp) Standard File Names soddisfa le vostre esigenze?

+0

Si noti che questo non è l'uso previsto di 'convert-standard-filename', quindi potrebbe non riuscire in alcuni casi (ad esempio restituire un nome che non si riferisce allo stesso file). – Stefan

+0

@Stefan: concordato. Ma non capisco anche lo scopo di luozengbin, perché Emacs e alcuni strumenti in Windows possono gestire anche la barra. Su tali sistemi 'converter-standard-filename' restituirà un nome file diverso, il nome file originale non è valido. Se luozengbin vuole passare questo nome ad altri strumenti, la ridenominazione potrebbe essere il comportamento corretto. – OwnWaterloo

+0

ciao. grazie per il tuo aiuto. voglio passare il nome del file ad altri tools.but gli strumenti non supporta posix path.so ho bisogno di convertirlo. – luozengbin

5

Ovviamente (subst-char-in-string ?/ ?\\ <file>) dovrebbe fare il trucco. Ma si noti anche che le barre funzionano quasi ovunque in Windows (l'unico strumento che conosco che non le supporta è la "shell" predefinita (command.com, cmd.exe o un nome simile) quindi forse non lo fai nemmeno bisogno di questa conversione.

Problemi correlati