Windows命令提示符中参数含空格引发R脚本执行报错求助
解决Windows CMD中含空格路径运行R脚本的报错问题
这种带空格路径的问题在Windows CMD里挺常见的,虽然你已经用引号括了路径,但有时候还是会因为CMD的解析规则或者程序参数处理逻辑出问题,给你几个靠谱的解决办法:
使用Windows 8.3短路径格式
Windows会给含空格的目录生成一个短名称(比如Google Drive会变成GOOGLE~1),你可以先获取这个短路径:- 打开CMD,输入
cd C:\Users\Scott,切换到用户目录 - 运行
dir /x,找到Google Drive对应的短名称(通常是开头6个字母加~1) - 把脚本路径换成短路径版本,比如:
甚至Rscript的路径也可以换成短路径"C:\Program Files\R\R-3.4.3\bin\Rscript.exe" C:\Users\Scott\GOOGLE~1\RScriptsB\Bundle_Runner.RC:\PROGRA~1\R\R-3.4.3\bin\Rscript.exe,这样整个命令都没有空格了。
- 打开CMD,输入
切换到脚本所在目录再运行
先进入脚本所在的文件夹,这样就不用在命令里写带空格的完整路径了,操作步骤: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




