[英]Ampersand in file path for Rscript.exe
我试图通过我编写的批处理文件运行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的问题,我不知道这是怎么回事。 而不是直接使用\\bin
的Rscript.exe,您必须更进一步,并使用"!PATH!\\R-3.0.1\\bin\\i386\\Rscript.exe"
,该方法很有用,这很可能是因为我在32位计算机而不是64位计算机。
使用批处理文件,通常可以通过使用^
来转义&
来使其正常工作。 我没有Windows机器,但是可以先手动检查是否可以运行,如果可以,我可以在必要时与您一起实施实现字符串转义的功能。
对于下面两种工作之一的替换(请原谅我,因为我没有Windows机器),
set workable_filename=%file_name:^&=^^&%
set workable_filename=%file_name:&=^&%
@REM:: I cannot test, but one of these should work
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.