You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Windows命令提示符中参数含空格引发R脚本执行报错求助

解决Windows CMD中含空格路径运行R脚本的报错问题

这种带空格路径的问题在Windows CMD里挺常见的,虽然你已经用引号括了路径,但有时候还是会因为CMD的解析规则或者程序参数处理逻辑出问题,给你几个靠谱的解决办法:

  • 使用Windows 8.3短路径格式
    Windows会给含空格的目录生成一个短名称(比如Google Drive会变成GOOGLE~1),你可以先获取这个短路径:

    1. 打开CMD,输入cd C:\Users\Scott,切换到用户目录
    2. 运行dir /x,找到Google Drive对应的短名称(通常是开头6个字母加~1)
    3. 把脚本路径换成短路径版本,比如:
      "C:\Program Files\R\R-3.4.3\bin\Rscript.exe" C:\Users\Scott\GOOGLE~1\RScriptsB\Bundle_Runner.R
      
      甚至Rscript的路径也可以换成短路径C:\PROGRA~1\R\R-3.4.3\bin\Rscript.exe,这样整个命令都没有空格了。
  • 切换到脚本所在目录再运行
    先进入脚本所在的文件夹,这样就不用在命令里写带空格的完整路径了,操作步骤:

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

    这种方法最直观,也不容易出错,因为cd命令的引号能正确识别含空格的目录,之后只需要运行当前目录下的脚本即可。

  • 尝试用转义字符处理空格
    虽然引号是标准处理方式,但偶尔可以用^作为空格的转义符试试(注意只转义路径里的空格,不要转义引号里的):

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

    不过这个方法的可靠性不如前两种,优先推荐前两个方案。

另外,你可以检查一下路径里有没有隐藏的特殊字符(比如全角空格),不过既然无空格路径能正常运行,大概率就是空格的解析问题,上面的方案应该能解决。

内容的提问来源于stack exchange,提问作者Scott

火山引擎 最新活动