无法通过 Windows 服务器中的 .bat 文件 运行 R 脚本

Unable to run R script through .bat files in Windows Server

我正在尝试通过 .bat 文件 运行 R 脚本。当我 运行 自己逐行运行命令时。但是当我尝试 运行 .bat 文件时,它不起作用。

这是 .bat 文件

cd "C:\Program Files\R\R-3.1.2\bin"
R CMD BATCH "C:\Users\Administrator\Downloads\testa_vps.R"

这是 R 脚本

setwd('C:\Users\Administrator\Documents')
file.create('mycsv.csv')

我不是 Windows 方面的专家,通常会尝试坚持使用 Unix-like 系统来处理此类事情,但我发现使用程序 non-interactively(例如通过 .bat 文件)通常更少 error-prone 当您将适当的目录添加到您的(用户)PATH 变量时,而不是 cd 进入目录并从内部调用可执行文件.bat 文件。例如,除其他外,我的用户 PATH 变量包含 C:\PROGRA~1\R\R-3.0\bin\; - 包含 R.exeRscript.exe 的目录 - (其中 PROGRA~1Program Files 可以在不带引号的文件路径中使用,因为名称中没有空格)。

执行此操作后,您可以通过在新的命令提示符中键入 Rscript 来检查 PATH 修改是否成功 - 它应该打印出 Rscript 的使用信息,而不是典型的 xxx is not recognized as an internal or external command... 错误信息。

在目录C:\Users\russe_000\Desktop\Tempfiles中,我创建了test_r_script.r,其中包含[=36​​=]

library(methods)
setwd("C:\Users\russe_000\Desktop\Tempfiles")
file.create("mycsv.csv")

test_r.bat,其中包含[=36​​=]

Rscript --vanilla --no-save "C:\Users\russe_000\Desktop\Tempfiles\test_r_script.r"

单击 Windows 批处理文件 test_r 运行 过程成功并在正确的文件夹中生成 mycsv.csv


在 运行 test_r.bat 之前:


运行test_r.bat之后:


我从未使用过 Windows 服务器,但我不明白为什么这个过程与个人计算机上的过程有根本的不同;如果您没有足够的权限来更改环境变量,您可能只需要您的系统管理员修改 PATH 变量。

正如@nrussel 在评论中所建议的那样,您应该为此使用 RScript.exe

创建一个包含以下内容的文件launcher.bat

cd C:\Users\Administrator\Documents
Rscript testa_vps.R

此外,将 C:\Program Files\R\R-[your R version]\bin\x64;C:\Program Files\R\R-[your R version]\bin\i386 添加到 Environment Variables 菜单中的系统路径变量,具体取决于您是否 运行 R 在 64-位或 32 位系统。

我刚刚在 Windows Server 2008 64 位系统上成功测试了上述方法,并且 mycsv.csv 按预期创建。

编辑

我忘记提及的重要一点如下:您需要在 setwd() 调用中指定 R 文件中的路径,使用 \ 而不是 \

setwd('C:\Users\Administrator\Documents')

下面是 Windows 2008 服务器上成功 运行 的截图:

注意:我在.bat文件中添加了cmd /k,这样cmd window在点击文件后保持打开状态。