我正在尝试在Windows shell中运行以下R脚本:
Rscript C:/Documents/Folder name containing space/myscript.txt
在这种情况下,我会收到错误提示:
Fatal error: cannot open file 'C:/Documents/Folder': No such file or directory
然而,当我使用引号(尝试过单引号,双引号和三引号,因为其他帖子中建议这样做)时,出现以下错误:
Rscript "C:/Documents/Folder name containing space/myscript.txt"
The filename, directory name, or volume label syntax is incorrect.
我找不到避免空格问题的方法,更改文件位置使其没有空格对我来说不是一个选择。
任何帮助将不胜感激。
进一步说明:
我遇到的问题与 R 不直接相关,而是由于包含空格的文件路径被传递给 Rscript。
在文档中,Rsript 应该按以下方式使用:
Rscript [options] [-e expr [-e expr2 ...] | file] [args]
值得注意的是:
表达式和文件中允许有空格(但需要保护来自所使用的 shell 的空格,例如通过将参数括在引号中进行保护)。
然而,试图在引号中包含文件路径会导致错误。
The filename, directory name, or volume label syntax is incorrect.
为了避免混淆,当路径不包含空格时,运行
Rscript C:/Documents/Folder_name/myscript.txt
是可以正常工作的,就像Rscript "C:/Documents/Folder_name/myscript.txt"
一样。
Rscript C:/Documents/Folder\\ name\\ containing\\ space/myscript.txt
- litcmd /?
。最后一页上的最后一段帮助输出到__控制台窗口__(而不是shell窗口)中,解释了如果文件名参数包含空格或以下这些字符之一&()[]{}^=;!'+,`~
,则必须用双引号括起来。在Windows上的目录分隔符是反斜杠字符\
。不知道Windows上的Rscript
是否期望像Unix/Linux/Mac上那样使用/
作为文件名。Rscript.exe "C:\Documents\Folder name containing space\myscript.txt"
可能 可以工作。(我无法测试它,因为未安装Rscript。) - MofiRscript "C:/Documents/Folder name containing space/myscript.txt"
- Steven"'C:/Documents/Folder name containing space/myscript.txt'"
。Windows 命令行解释器cmd.exe
不支持使用'
引用带有空格的参数,就像 Linux shell 解释器bash
、sh
或ksh
一样。因此,在 Windows 上必须使用双引号来表示带有空格的参数字符串。但也许 Rscript 的编码非常糟糕,只能正确解释用'
括起来的带有空格的文件名。而且由于 Rscript 是从 Unix 移植过来的,因此使用第一个参数--
,第二个参数为用"
括起来的文件名可能会有所帮助。 - Mofi