我编写了一个R脚本,它从数据库中提取一些数据,对其执行多个操作并将输出发布到新数据库。
我希望这个脚本每天在特定时间运行,但我找不到任何有效的方法。
任何人都可以推荐我可以看到的资源来解决这个问题吗?我在Windows机器上运行此脚本。
答案 0 :(得分:94)
实际上,在Windows下,您甚至不必先创建批处理文件来使用计划程序。
答案 1 :(得分:56)
假设您的R脚本位于mytest.r
,位于D:\mydocuments\
,您可以创建包含以下命令的批处理文件:
C:\R\R-2.10.1\bin\Rcmd.exe BATCH D:\mydocuments\mytest.r
然后将其作为新任务添加到Windows任务计划程序,在那里设置触发条件。
您也可以省略批处理文件。在任务计划程序的C:\R\R-2.10.1\bin\Rcmd.exe
文本框中设置program/script
,并将Arguments
作为初始命令的其余部分:BATCH D:\mydocuments\mytest.r
Scheduling R Tasks via Windows Task Scheduler(发布于2015年2月11日)
taskscheduleR: R package to schedule R scripts with the Windows task manager(发表于2016年3月17日)
修改强>
我最近又采用了批处理文件,因为我希望cmd窗口最小化(我找不到其他方法)。
具体来说,我填写了Windows任务调度程序Actions
标签,如下所示:
Program/script:
cmd.exe的
Add arguments (optional):
/ c start / min D:\ mydocuments \ mytest.bat ^&出口
mytest.bat的内容:
C:\ R \ R-3.5.2 \ bin \ x64 \ Rscript.exe D:\ mydocuments \ mytest.r params
答案 2 :(得分:4)
我通过SCHTASKS
程序设置了我的任务。要在启动时运行脚本,您可以按照
SCHTASKS /Create /SC ONSTART /TN MyProgram /TR "R CMD BATCH --vanilla d:\path\to\script.R"
有关SCHTASKS
的详细信息,请参阅this website。更多详情请见Microsoft's website。
答案 3 :(得分:4)
设置任务计划程序
步骤1)打开任务计划程序(开始>搜索任务计划程序)
步骤2)点击“操作”>“创建任务”
第3步)选择“仅在用户登录时运行”,取消选中“以最高权限运行”,为您的任务命名, 为“ Windows Vista / Windows Server 2008”配置
第4步)在“触发器”标签下,设置您希望脚本运行的时间
第5步)在“操作”标签下,放置Rscript.exe文件的完整位置,即
"C:\Program Files\R\R-3.6.2\bin\Rscript.exe" (include the quotes)
使用-e
和source()
在包装此类参数的参数中输入脚本名称:
-e "source('C:/location_of_my_script/test.R')"
对在任务计划程序中计划的Rscript进行故障排除
使用任务计划程序运行脚本时,很难解决任何问题,因为您不会收到任何错误消息。
这可以通过使用R中的sink()
函数来解决,该函数将允许您将所有错误消息输出到您指定的文件。这是您可以执行的操作:
# Set up error log ------------------------------------------------------------
error_log <- file("C:/location_of_my_script/error_log.Rout", open="wt")
sink(error_log, type="message")
try({
# insert your code here
})
要使Rscript正常工作,您还需要更改的另一件事是在脚本中指定所有文件路径的完整文件路径。
这在任务计划程序中将不起作用:
source("./functions/import_function.R")
您将需要指定要在Rscript中采购的所有脚本的完整文件路径:
source("C:/location_of_my_script/functions/import_function.R")
答案 4 :(得分:3)
您可以使用Windows Task Scheduler。
答案 5 :(得分:3)
现在RStudio中有一个内置选项可以执行此操作,以便先在程序包下面运行调度程序
install.packages('data.table')
install.packages('knitr')
install.packages('miniUI')
install.packages('shiny')
install.packages("taskscheduleR", repos = "http://www.datatailor.be/rcube", type =
"source")
安装后转到
**TOOLS -> ADDINS ->BROWSE ADDINS ->taskscheduleR -> Select it and execute it.**
答案 6 :(得分:0)
执行这些步骤的任意组合后,如果在R.exe运行后收到"Argument Batch Ignored"
错误,请尝试此操作,这对我有用。
在Windows任务计划程序中:
在参数字段中替换BATCH "C:\Users\desktop\yourscript.R"
与
CMD BATCH --vanilla --slave "C:\Users\desktop\yourscript.R"