【问题标题】:windows batch file running C# program at intervals间隔运行C#程序的windows批处理文件
【发布时间】:2014-07-30 09:54:51
【问题描述】:

第 1 步:我有 5 个 C# 程序在星期五晚上使用任务计划程序运行。如果全部成功运行,我将使用程序名称(均以 NAMESEARCH 开头)更新 SQL SERVER 数据库中的状态表,该表以状态 = 1 完成运行。如果有异常,我用程序名和 Status=0 更新 Status 表。

Create table Run_Status(ProgramName varchar(500) not null, Status int not null);

在第2步:编写一个bat文件来运行C#程序(Name.exe) 我的 c# 程序这样做:我检查 Run_Status 表,如果像 'NAMESEARCH%' 这样的程序名的计数为 5。然后检查所有状态是否 =1,然后继续其他处理

我的问题:我如何编写一个每小时运行一次的 bat 文件来检查,直到像 'NAMESEARCH%' 这样的程序名的计数为 5,或者换句话说,步骤 1 完成。

这就是我的 bat 文件中的全部内容

@ECHO OFF
SET Header=-----------------------------------------------------

start "" "C:\Projects\Name\Name\bin\Debug\Name.exe"
echo %ERRORLEVEL%
if %ERRORLEVEL% NEQ 0 (
echo %header%
Echo There has been an error.
echo.
pause
goto end)
if %ERRORLEVEL% EQU 1 (
ECHO Success
goto end
}
:end
REM ----------------------------------------------------------------
echo %header%
echo END
REM cd ..

谢谢 回复

【问题讨论】:

  • 不确定我是否理解您的问题。您已经有 5 个定期执行的程序与您的数据库交互,现在您要问如何编写第 6 个程序以定期执行并与数据库交互?在写完前 5 个之后,我会认为这将是一件容易的事。这次有什么不同?
  • @nvoigt,第 6 个程序,由 bat 文件而不是任务调度程序执行。它需要检查是否所有 5 个程序都完成了运行。当我运行 bat 文件(即第 6 个 C# 程序)时,如果我只有 2 条以 NAMESEARCH 开头的记录,那么我希望 bat 文件在 1 小时后再次运行以检查其他 3 个 C# 程序的完成情况。
  • name.exe 是否返回任何错误级别或文本输出?含义/内容是什么?
  • @MCND,name.exe 是 lucene 索引程序 - 为我从任务调度程序运行的前 5 个程序插入的行构建索引。我只是将异常记录到一个文本文件中。

标签: c# sql-server batch-file


【解决方案1】:

您是否考虑过使用 Jenkins 为您运行这些作业?

Jenkins 是免费的(就像啤酒一样),有很多插件可以让您的生活更轻松。尽管它被标记为 CI 服务器,但它可以使用计划或触发器自动执行任何类型的批处理命令。 您可以让批处理命令按顺序运行,报告错误或不报告错误。 Jenkins 可以根据工作成果生成电子邮件或做其他事情。

要具体回答您的问题:我会在 jenkins 中创建 2 个作业,第一个作业每小时执行一个 Windows 批处理,检查您想要的 SQL 结果,第二个作业是您提到的其他处理。

将第二个作业设置为由第一个作业成功完成触发。

相信我,Jenkins 易于使用。我一直在为它寻找新的东西来让我的生活更轻松。

想在早上 5 点打开咖啡机,并在咖啡机准备好时收到消息?在 Raspberry Pi 和 IFTTT 的帮助下,Jenkins 也可以做到这一点。

http://jenkins-ci.org/category/tags/tutorial

【讨论】:

    猜你喜欢
    • 2014-03-15
    • 1970-01-01
    • 1970-01-01
    • 2017-03-28
    • 2023-01-11
    • 1970-01-01
    • 2011-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多