2012-03-28 13 views
6

Próbuję kilka rzeczy w oknach z emacs. W moim przypadku muszę zwrócić ścieżkę pliku z odwróconym ukośnikiem od elisp. Ale elisp zawsze zwraca ścieżkę z ukośnikiem itp.Jak uzyskać ścieżkę okna z odwróconym ukośnikiem od elisp

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

Moje wymóg:

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

To można zrobić z regexp, ale muszę bardziej prosty sposób.

Odpowiedz

7

Czy convert-standard-filename w (elisp) Standard File Names pasuje do twoich potrzeb?

+0

Należy zauważyć, że nie jest to zamierzone użycie 'convert-standard-filename', więc w niektórych przypadkach może się nie udać (np. Zwrócić nazwę, która nie odnosi się do tego samego pliku). – Stefan

+0

@Stefan: Zgoda. Ale nie rozumiem też celu luozengbin, ponieważ Emacs i niektóre narzędzia w Windows mogą również obsługiwać slash. W takich systemach 'converter-standard-filename' zwróci inną nazwę pliku, oryginalna nazwa pliku jest nieprawidłowa. Jeśli luozengbin chce przekazać tę nazwę innym narzędziom, zmiana nazwy może być prawidłowym zachowaniem. – OwnWaterloo

+0

cześć. dzięki za pomoc. Chcę przekazać nazwę pliku do innych narzędzi. Ale narzędzia nie obsługuje posix path.so muszę go przekonwertować. – luozengbin

5

Oczywiście, powinienem załatwić sprawę: (subst-char-in-string ?/ ?\\ <file>). Zauważ jednak, że ukośniki działają prawie wszędzie w systemie Windows (jedynym dostępnym narzędziem, które ich nie obsługuje, jest domyślna "powłoka" (command.com, cmd.exe lub inna taka nazwa)), więc może nawet nie masz potrzebuję tej konwersji.

Powiązane problemy