2012-03-28 7 views
6

Estoy probando algunas cosas en windows con emacs. En mi caso, necesito devolver la ruta del archivo con la barra invertida de elisp. Pero elisp siempre devuelve el camino con barras, etc.Cómo obtener la ruta de Windows con barra invertida desde elisp

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

Mi requisito:

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

Se puede hacer con la expresión regular, pero necesito de forma más sencilla.

Respuesta

7

¿convert-standard-filename en (elisp) Standard File Names se ajusta a su necesidad?

+0

Tenga en cuenta que este no es el uso previsto de 'convert-standard-filename', por lo que puede fallar en algunos casos (por ejemplo, devolver un nombre que no se refiera al mismo archivo). – Stefan

+0

@Stefan: De acuerdo. Pero tampoco entiendo el propósito de Luozengbin, porque Emacs y algunas herramientas en Windows también pueden manejar la barra. En tales sistemas 'converter-standard-filename' devolverá un nombre de archivo diferente, el nombre de archivo original no es válido. Si luozengbin quiere pasar este nombre a otras herramientas, el cambio de nombre puede ser el comportamiento correcto. – OwnWaterloo

+0

hola. Gracias por tu ayuda. Quiero pasar el nombre de archivo a otras herramientas. Pero las herramientas no admiten la ruta de acceso posix. Así que necesito convertirlo. – luozengbin

5

Por supuesto, (subst-char-in-string ?/ ?\\ <file>) debería hacer el truco. Pero tenga en cuenta también que las barras funcionan casi en todas partes en Windows (la única herramienta que sé que no las soporta es el "shell" predeterminado (command.com, cmd.exe, o algún otro nombre)) así que tal vez ni siquiera necesita esta conversión

Cuestiones relacionadas