无法通过 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.exe
和 Rscript.exe
的目录 - (其中 PROGRA~1
是Program 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在点击文件后保持打开状态。
我正在尝试通过 .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.exe
和 Rscript.exe
的目录 - (其中 PROGRA~1
是Program 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在点击文件后保持打开状态。