【问题标题】:How to get windows path with backslash from elisp如何从elisp获取带有反斜杠的windows路径
【发布时间】:2014-02-27 05:00:37
【问题描述】:

我正在使用 emacs 在 windows 上尝试一些东西。就我而言,我需要从 elisp 返回带有反斜杠的文件路径。但是elisp总是用斜杠等返回路径。

(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

可以用正则表达式完成,但我需要更简单的方法。

【问题讨论】:

    标签: emacs elisp


    【解决方案1】:

    (elisp) Standard File Names 中的convert-standard-filename 是否符合您的需求?

    【讨论】:

    • 请注意,这不是 convert-standard-filename 的预期用途,因此在某些情况下它可能会失败(例如,返回不引用同一文件的名称)。
    • @Stefan:同意。但是我也不明白罗增斌的目的,因为Emacs和Windows中的一些工具也可以处理斜线。在此类系统上converter-standard-filename 将返回不同的文件名,原始文件名无效。如果 luozengbin 想将此名称传递给其他工具,重命名可能是正确的行为。
    • 嗨。谢谢你的帮助。我想将文件名传递给其他工具。但是这些工具不支持 posix 路径。所以我需要转换它。
    • @luozengbin converter-standard-filename 将返回一个不同的名称,例如(converter-standard-filename ".f") ==> "_f" on MS-DOS 根据info。如果 MS-DOS 上的“.f”是一个无效的文件名,“_f”可能是你想要的。
    【解决方案2】:

    当然(subst-char-in-string ?/ ?\\ <file>) 应该可以解决问题。但还要注意,斜线在 Windows 中几乎无处不在(我知道的唯一不支持它们的工具是默认的“shell”(command.com、cmd.exe 或类似名称))所以也许你甚至不需要这种转换。

    【讨论】:

      猜你喜欢
      • 2013-01-22
      • 2012-11-16
      • 2020-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-04
      • 2021-11-30
      相关资源
      最近更新 更多