批处理文件:使用变量指定重定向位置

时间:2014-10-20 02:34:26

标签: r batch-file

我首先要道歉,因为不得不提出这样一个基本问题,我确信这是一个非常简单的修复,但我无法找到我正在寻找的信息(或者调整我发现的信息)我的情况)。我刚开始编写批处理文件,我之所以刚开始,是因为我想让那些不使用R的人轻松执行R-Script。

所以下面的代码运行一个R-Script就好了,脚本存在于一个名为'R Files'的文件夹中,脚本本身将其输出定向到'Output'文件夹,其中'R Files'和'Output文件夹共享同一个父文件夹。

R --vanilla --quiet <growth_plot_driver.R >console_output.txt

但是,考虑到此代码的其他用户不太可能将父文件夹放在我所做的相同位置,我认为最好在变量中指定输入和输出文件。这是我遇到问题的地方,“系统找不到指定的文件”类。我尝试了以下代码的许多变体。

set "path1=%cd%\growth_plot_driver.R"
cd..
cd Output
set "path2=%cd%\console_output.txt"
R --vanilla --quiet <%path1% >%path2%

但正如我所说,我是新手,如果有更好的方法可以解决这个问题,我很高兴听到这个消息。

1 个答案:

答案 0 :(得分:3)

nograpes已经提出了一个可能的解决方案:

set path1="%cd%\growth_plot_driver.R"
cd ..\Output
set path2="%cd%\console_output.txt"
R --vanilla --quiet <%path1% >%path2%

这定义了环境变量path1path2,其字符串值包含双引号。

但我更喜欢这种情况:

set "path1=%cd%\growth_plot_driver.R"
cd ..\Output
set "path2=%cd%\console_output.txt"
R --vanilla --quiet <"%path1%" >"%path2%"

这定义了环境变量path1path2,其字符串值不包含双引号。但是,路径中的空格情况下所需的双引号现在用于引用两个环境变量的值。换句话说,环境变量实际上只包含具有完整路径的文件名,并且在命令中使用所需的双引号。