【问题标题】:Space in argument causing errors in Windows Command Prompt参数中的空格导致 Windows 命令提示符中的错误
【发布时间】:2018-09-15 20:53:51
【问题描述】:

我正在尝试通过命令提示符运行 R 脚本。我的操作系统是 Windows 10。我在运行代码时遇到问题,因为我的参数的文件路径中有一个空格。这是我粘贴到命令提示符中的内容。

"C:\Program Files\R\R-3.4.3\bin\Rscript.exe" "C:\Users\Scott\Google Drive\RScriptsB\Bundle_Runner.R"

I get this error:

The filename, directory name, or volume label syntax is incorrect.

但是,当我使用没有空格的文件路径运行它时,它运行良好。

"C:\Program Files\R\R-3.4.3\bin\Rscript.exe" "C:\Users\Scott\Desktop\Bundle_Runner.R"

当我通过任务计划程序安排任务时会发生相同的行为:它不适用于空间,而当我从文件路径中删除空间时它会起作用。

我正在使用 Google Drive 从多台计算机同步工作,因此我希望能够使用带空格的文件路径运行我的脚本。

有什么解决办法吗?

【问题讨论】:

  • 前段时间,我读到/了解到路径中有空格(在 Windows 上)在特定情况下是有问题的(我经常遇到这种情况),所以从那时起我一直安装在 @987654327 中@ 路径中没有 Program Files。从那以后我没有任何问题。这是一个有趣的(虽然承认很弱)说明:cran.r-project.org/bin/windows/base/…(对不起,没有太多的答案,只是同情)。
  • 奇怪的想法:双引号怎么样?例如"C:\Program Files\R\R-3.4.3\bin\Rscript.exe" "'C:\Users\Scott\Google Drive\RScriptsB\Bundle_Runner.R'"(请注意引号内的额外刻度)。
  • @r2evans - 没用 :( 我尝试了几种不同版本的报价配置。""C:\Program Files\R\R-3.4.3\bin\Rscript.exe" "C:\Users\Scott\Google Drive\RScriptsB\Bundle_Runner.R"""C:\Program Files\R\R-3.4.3\bin\Rscript.exe" "C:\Users\Scott\'Google Drive'\RScriptsB\Bundle_Runner.R"
  • 我无法想象这是一个命令提示符问题,因为它被很好地引用:"C:\...\Rscript.exe" "C:\...\Bundle_Runner.R"Rscript.exe 这里的空格有问题吗?也许尝试:"C:\...\Rscript.exe" "'C:\...\Bundle_Runner.R'",或"C:\...\Rscript.exe" ""C:\...\Bundle_Runner.R"",或"C:\...\Rscript.exe" ^""C:\...\Bundle_Runner.R"^"
  • 刚刚用stackoverflow.com/a/10227715/3358272 测试过,它工作正常。这并不理想,但它是一个开始。

标签: r batch-file command-prompt rscript


【解决方案1】:

试试这个:

C:/PROGRA~1/R/R-3.4.3/bin/Rscript.exe "C:\Users\Scott\Desktop\Bundle_Runner.R"

或者

C:/PROGRA~1/R/R-3.4.3/bin/Rscript.exe C:/Users/Scott/Google~1/RScriptsB/Bundle_Runner.R

【讨论】:

  • 我认为问题出在 Bundle_Runner.R 的路径上,而不是 R 的路径上。但是,它确实提出了可能使用这个的问题:stackoverflow.com/a/10227715/3358272
  • 是的,但是...在文件路径中放置一个空格,而不仅仅是可执行文件的路径。
  • @JeanVuda - 我仍然遇到同样的错误。 C:/PROGRA~1/R/R-3.4.3/bin/Rscript.exe "C:\Users\Scott\Google Drive\RScriptsB\Bundle_Runner.R"
  • @JeanVuda - 我尝试了第二个版本并且成功了。感谢您的帮助!
  • 对于我自己的教育,~1 是做什么的?
【解决方案2】:
FOR %%a IN ("C:\Users\Scott\Google Drive\RScriptsB\Bundle_Runner.R") DO "C:\Program Files\R\R-3.4.3\bin\Rscript.exe" %%~sa

这将是我的方法 - 问题似乎出在 R,而不是 cmd

【讨论】:

    【解决方案3】:

    这可能与 r-devel 报告的错误(“[Rd] RScript.exe for 3.5.0 中的错误”,https://stat.ethz.ch/pipermail/r-devel/2018-April/075869.html)有关,该错误已在第二天修复。

    也许问题已经存在于 R 3.4.3 中(您正在使用您的问题)。

    建议的解决方法:

    ...添加一个额外的第一个参数,其中没有空格,例如Rscript --vanilla "foo bar.R"

    为了尽量减少--vanilla 造成的影响,您可以使用

    Rscript --no-save "foo bar.R"
    

    相反(只是在会话结束时不保存工作区)。

    【讨论】:

    • 很高兴知道。我将不得不尝试更新到最新版本的 R 并测试是否再次遇到问题。
    • 补丁是全新的,估计要等3.5.1了
    猜你喜欢
    • 2015-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多