(我是完全的 Windows 菜鸟,从小就使用 Linux)
如果我只是运行:
C:\Progra~1\R\R-3.4.0\bin\x64\Rscript.exe C:\Users\NPX9sx9000010190CAL\Desktop\el_leo\code_15.R
在 Windows 服务器 DOS 终端以管理员身份运行,一切正常。
现在我需要将此脚本作为服务来运行(向我支付食物的地方的政策);
我在互联网上查了一下,并将其放入 Windows 服务器 DOS 终端中:
sc create myRScript5 binPath= "cmd.exe /c C:\Progra~1\R\R-3.4.0\bin\x64\Rscript.exe C:\Users\NPX9sx9000010190CAL\Desktop\el_leo\code_15.R" DisplayName= "My R script 5"
该服务已正确显示在列表中。我右键单击并按“开始”。我得到:
Error 1053: The Service did not respond to the start request
我也尝试了一些或多或少有启发的变体,例如:
sc create myRScript3 binPath= "C:\Progra~1\R\R-3.4.0\bin\x64\Rscript.exe \"C:\Users\NPX9sx9000010190CAL\Desktop\el_leo\progtest.R\"" DisplayName= "My R script 3"
我肯定做了一些愚蠢的事情,但我不知道是什么。FWIW 这里是 code_15.R
setwd("C:/Users/NPX9sx9000010190CAL/Desktop/el_leo")
library(doSNOW)
print('boom')
set.seed(123)
x = runif(10)
write.table(x, 'yahoo.txt')
编辑
我正在尝试 SqlACID 解决方案(可能在某个地方搞砸了)。
我安装了 srvany。
我创建了一个文件
C:\Users\NPX9sx9000010190CAL\Desktop\el_leo\rrr.bat
包含:
C:\Progra~1\R\R-3.4.0\bin\x64\Rscript.exe C:\Users\NPX9sx9000010190CAL\Desktop\el_leo\code_15.R
我以管理员身份启动 Windows 终端并运行:
sc create "MyFirstService" binPath= "C:\Temp\SrvAny.exe" start= auto
我明白了
[SC] CreateService SUCCESS
从 Windows 终端。我启动 RegEdit 并发现
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyFirstService
我创建了一个关键参数
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyFirstService\Parameters
在其中,我创建了一个类型为 REG_SZ 的新字符串应用程序,并带有 value_data:
C:\Users\NPX9sx9000010190CAL\Desktop\el_leo\rrr.bat
然后,我进入服务,找到 MyFirstService 并右键单击运行;
我有
Error 2: The system could not find the file specified
答案1
服务需要以非常具体的方式响应启动/停止请求,而 cmd.exe 无法做到这一点;曾经有一个“服务包装器”,可以将通用可执行文件封装为服务,它随附了Windows Server 资源工具包,寻找 SRVANY.EXE,我不知道它是否可以在较新的操作系统上运行或者是否有替代方案,但值得一试。
OP 通过使用运行批处理文件而不是服务的计划任务解决了该问题。
OP 在这里:一位同事贡献了以下内容:
schtasks /create /sc ONCE /tn OP /tr C:\Users\NPX9sx9000010190CAL\Desktop\el_leo\R.bat /st 09:35