【问题标题】:Path with double backslash in VS-Code TaskVS-Code 任务中带有双反斜杠的路径
【发布时间】:2019-12-11 12:41:13
【问题描述】:

我想创建一个 VS-Code 任务,执行 R 命令将 Markdown 转换为 PDF。我当前的任务如下所示:

{
    "label": "rmarkdown -> pdf",
    "type": "process",
    "command": "Rscript",
    "args": ["-e", "\"rmarkdown::render('${file}', 'pdf_document')\""],
    "windows": true,
    "presentation": {
        "reveal": "always",
        "panel": "new"
    }
}

问题在于,${file} 返回的路径如下:

d:\data\documents\myFile.md

但是 R 需要一个带有转义反斜杠的路径,如下所示:

d:\\data\\documents\\myFile.md

如何从${file}获取转义路径?

带有普通斜杠的替代路径也可以完成这项工作,因为 R 会自动将 / 替换为 \\

【问题讨论】:

    标签: visual-studio-code vscode-tasks


    【解决方案1】:

    VSCode 旨在返回带有特定平台分隔符的路径。

    作为一种典型的解决方法,您可以创建一个中间脚本,该脚本将调节从任务传递给它的参数,然后调用您的工具。

    vscode 问题跟踪器中的相关讨论:#70050

    【讨论】:

    • 感谢您的回答 Killy.MXI。当然你是对的,这是一种解决方法。但我不想为此创建脚本。
    • 我认为解决这个问题的最佳方法是提交一份提案,为 VSCode 开发团队准备接受的路径变量指定分隔符。到目前为止,我只看到提到替换语法,丑得可以拒绝。
    • 我觉得可以把中间脚本完全写在task args里面,但是转义两层脚本会很痛苦。单独的脚本更易于维护。
    • 是的,我认为您可以将脚本写入参数是正确的。但我不同意你关于更换的看法。我对 VS-Code 的代码一无所知。但我认为 VS-Code 仅在执行期间替换 ${file} 。那么,为什么要实现自定义替换的进一步替换功能很难看呢。
    猜你喜欢
    • 2020-11-25
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-23
    • 1970-01-01
    • 2013-01-22
    • 1970-01-01
    相关资源
    最近更新 更多