【问题标题】:Scripting a Batch File that looks for a SUCCESS Message编写查找成功消息的批处理文件的脚本
【发布时间】:2013-07-30 09:59:20
【问题描述】:

Windows 批处理文件:

我有一个由进程创建的日志。现在我想创建一个批处理文件来检查这个日志文件是否有特定的成功消息:

 BDX 2013/07/25 23:08:02 -I- DATABASE SUCCESSFULL 

现在日志文件中有几个不同时间戳的成功条目,因为日志文件只是添加了最新的成功消息。

所以我想检查日志文件中最新的成功消息,并将其与日志文件上的日期戳(日志文件的日期值,即上次写入的时间)进行比较: 如果日志文件中最新成功条目的日期匹配日志文件的日期戳,它应该运行另一个批处理文件(例如,调用 another.bat) .如果它不匹配,这意味着最后一个成功条目比日志文件上的时间戳更旧,它应该只写一个错误日志(error.log),其中包含以下文字:'DATABASE UNSUCCESSFUL',旁边是当前时间戳。 .

这可能吗?

谢谢

【问题讨论】:

  • 您的 DIR 列表中的日期格式是什么?这必须在具有不同区域设置的多台机器上工作,还是只在一台机器上工作?
  • 是的,只有一台机器...日期格式是:YY-MM-DD hh:mm AM/PM

标签: windows command-line batch-file


【解决方案1】:

试试这个:

for /f "tokens=2" %%a in ('findstr /i /c:"DATABASE SUCCESSFULL" logfile.txt') do set "success=%%a"
for %%a in (logfile.txt) do set "filedate=%%~ta"
if "%filedate:~0,10%"=="%success%" (
    call another.bat
) else (
    >>otherlogfile.log echo(%date% %time% DATABASE UNSUCCESSFUL
)

【讨论】:

  • 我们的代码非常相似,虽然我正在编写我的代码,但不知道你已经发布了。
  • 非常感谢!您的代码有效。你只是有一个语法错误 - ...echo(%... ( 括号
  • @DextrousDave echo 后面的括号是对的,它比echo. 更好地避免消息echo is off.
  • 好的,谢谢。你的脚本有问题。我玩了一下,当我将字符串从 DATABASE SUCCESSFUL 更改为具有相同日期值的 DATABASE UNSUCCESSFUL 时,它仍然运行 other.bat 文件......而且它不应该......基本上,它没有明确地寻找字符串“DATABASE SUCCESSFUL”,而只是寻找“DATABASE”......所以即使我添加了“DATABASE BLABLA”,它也会得到一个肯定的匹配
  • @DextrousDave 我更改了正则表达式,请立即尝试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-22
  • 1970-01-01
  • 2014-02-01
  • 2010-11-22
  • 2013-04-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多