我正在尝试通过我编写的批处理文件运行 R 脚本。我希望批处理脚本灵活,以便我可以将其移动到其他计算机或让它从网络驱动器中运行,并且它可以在所有情况下工作。我所做的是收集打开批处理文件的文件的路径,然后使用该路径激活 R 脚本。
当我有一个没有特殊字符的文件路径时它工作正常,但是我遇到了特殊字符的问题。
这是代码:
@ECHO OFF
setlocal EnableDelayedExpansion
set "_SCRIPT_DRIVE=%~d0"
set "_SCRIPT_PATH=%~p0"
set "PATH=!_SCRIPT_DRIVE!!_SCRIPT_PATH!"
这似乎可以按预期工作,就像我做的那样
ECHO !PATH!
我得到了我想要的输出
C:\\A&B\File
但是,当我稍后通过 Rscript.exe 命令运行此命令时,它无法识别延迟扩展并将 & 符号作为特殊字符执行。输入:
"!PATH!\R-3.0.1\bin\Rscript.exe" "!PATH!Scripts\Test.R"
回报:
'C:\\A' is not recognized as an internal or external command, operable program or batch file.
但是,当我尝试运行 Rscript.exe 时,我只有这个问题。我完全有能力打开一个文件,比如
"!PATH!Scripts\Test.R"
它执行没有任何问题。有没有其他人遇到过这个问题?有人看到我的语法有任何问题吗?
编辑:已解决
对于将来偶然发现这篇文章的任何人,我设法找到了解决这个问题的方法。事实证明,这根本不是批处理脚本错误,而是 Rscript.exe 的问题,我不确定发生了什么。而不是使用直接位于 中的 Rscript.exe \bin
,您必须更进一步并使用"!PATH!\R-3.0.1\bin\i386\Rscript.exe"
哪个有效,这很可能是因为我在 32 位机器上而不是 64 位机器上运行。