2012-03-28 30 views
6

Tôi đang thử vài thứ trên cửa sổ với biểu tượng emac. Trong trường hợp của tôi, tôi cần phải trả về đường dẫn tập tin với dấu gạch chéo ngược từ elisp. Nhưng elisp luôn luôn trở lại con đường với dấu gạch chéo, vv.Cách lấy đường dẫn cửa sổ có dấu gạch chéo ngược từ elisp

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

yêu cầu của tôi:

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

Nó có thể được thực hiện với regexp, nhưng tôi cần cách đơn giản hơn.

Trả lời

7

convert-standard-filename trong (elisp) Standard File Names phù hợp với nhu cầu của bạn không?

+0

Lưu ý rằng đây không phải là mục đích sử dụng 'tên tệp chuẩn-chuyển đổi', do đó có thể không thành công trong một số trường hợp (ví dụ: trả lại tên không tham chiếu cùng một tệp). – Stefan

+0

@Stefan: Đồng ý. Nhưng tôi cũng không hiểu mục đích của luozengbin, bởi vì Emacs và một số công cụ trong Windows cũng có thể xử lý dấu gạch chéo. Trên các hệ thống như vậy, 'converter-standard-filename' sẽ trả về một tên tệp khác, tên tệp gốc không hợp lệ. Nếu luozengbin muốn chuyển tên này cho các công cụ khác, việc đổi tên có thể là hành vi đúng. – OwnWaterloo

+0

hi. cảm ơn bạn đã giúp đỡ. tôi muốn vượt qua tên tập tin để các công cụ khác. nhưng các công cụ không hỗ trợ đường dẫn posix. Tôi cần phải chuyển đổi nó. – luozengbin

5

Tất nhiên (subst-char-in-string ?/ ?\\ <file>) nên thực hiện thủ thuật. Nhưng cũng lưu ý rằng các dấu gạch chéo hoạt động hầu như ở mọi nơi trong Windows (công cụ duy nhất mà tôi biết không hỗ trợ chúng là "shell" mặc định (command.com, cmd.exe, hoặc một số tên như vậy)) vì vậy có thể bạn thậm chí không cần chuyển đổi này.

Các vấn đề liên quan