繁体   English   中英

Rscript.exe的文件路径中的&符

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM