从命令行运行rscript,直到成功

从命令行运行rscript,直到成功,r,windows,batch-file,command-prompt,R,Windows,Batch File,Command Prompt,我需要在windows中的命令提示符下运行R脚本。问题是R脚本中有一些行有时会给出警告/错误(不是任何逻辑或语法错误,只是由于数据问题而失败。无论如何,这并不重要)。因此,我希望将系统命令放在某种循环中运行,直到它成功,即不返回任何警告/错误,而不是每次失败时手动重新运行它 我使用下面的系统命令来运行有问题的r脚本 Rscript D:/r_code.r 123 544 # 123 and 544 are two numeric arguments which I pass to the r

我需要在
windows
中的
命令提示符下运行
R脚本。问题是
R脚本
中有一些行有时会给出
警告/错误
(不是任何逻辑或语法错误,只是由于数据问题而失败。无论如何,这并不重要)。因此,我希望将
系统命令
放在某种循环中运行,直到它成功,即不返回任何
警告/错误,而不是每次失败时手动重新运行它

我使用下面的系统命令来运行有问题的r脚本

Rscript D:/r_code.r 123 544 

# 123 and 544 are two numeric arguments which I pass to the r script.
我如何完成我的任务

注意:最后,我需要运行一个批处理文件,该批处理文件将有多个命令来运行不同的R脚本,我需要将此循环放入其中,直到它成功地覆盖其中的每个命令。批处理文件如下所示:

Rscript D:/r_code1.r 123 544        # put loop condition here
Rscript D:/r_code2.r 125 524        # put loop condition here
Rscript D:/r_code3.r 156 553        # put loop condition here
Rscript D:/r_code4.r 187 587        # put loop condition here
添加一个屏幕截图,显示运行rscript命令后,错误或警告如何显示在命令提示符中


您可以尝试以下方法:

@echo off
:loop
Rscript D:/r_code.r 123 544 | findstr "exception error warning" >nul 2>nul
set warningfound=%errorlevel%
if %warningfound% neq 1 goto loop

这将执行一个命令,如果它在输出中找到findstr命令中的一个字,它将转到循环标记,并再次执行它。

从脚本运行时,脚本是否输出回命令行?您能举一个它给出的错误/警告的例子吗?@DennisvanGils我添加了一个屏幕截图,显示在我运行rscript命令时,错误或警告如何在命令提示符中显示。R脚本在失败时是否返回非零退出代码?你可以打开一个新的命令提示符窗口,从那里调用R脚本,然后执行'echo%ErrorLevel%`(显示退出代码)…我尝试了,但脚本只运行了一次,没有迭代。我想你颠倒了逻辑。。。您不需要变量
warning found
。。。我把
2>&1
放在
Rscript
调用之前,以防警告在STDERR输出……我尝试了
:循环Rscript d:/check.r23 |找到“警告错误”如果没有%errorlevel%eq 0转到:建立循环回显连接,它就工作了。谢谢你给我指路。顺便问一下,有没有办法以某种方式将这个语法写在一行中@aschipfl要在前一个命令成功(零退出代码)时有条件地执行命令,请使用
&&
;对于失败的情况(非零退出代码),请使用
|
;例如:
command&&echo成功回波故障。
;我希望这有助于。。。