Windows 为查找成功消息的批处理文件编写脚本

Windows 为查找成功消息的批处理文件编写脚本,windows,command-line,batch-file,Windows,Command Line,Batch File,Windows批处理文件: 我有一个由进程创建的日志。现在,我想创建一个批处理文件,用于检查此日志文件是否有特定的成功消息: BDX 2013/07/25 23:08:02 -I- DATABASE SUCCESSFULL 现在,日志文件中有几个不同时间戳的成功条目,因为日志文件只是添加了最新的成功消息 因此,我想检查日志文件中是否有最新的成功消息,并将其与日志文件上的日期戳(日志文件的日期值,即上次写入日志的时间)进行比较:如果日志文件中最新成功条目的日期与日志文件的日期戳相匹配,它应该

Windows批处理文件:

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

 BDX 2013/07/25 23:08:02 -I- DATABASE SUCCESSFULL 
现在,日志文件中有几个不同时间戳的成功条目,因为日志文件只是添加了最新的成功消息

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

这可能吗

谢谢

试试这个:

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
)
试试这个:

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
)

目录列表中的日期格式是什么?这必须在具有不同区域设置的多台机器上工作,还是仅在一台机器上工作?是的,仅在一台机器上…日期格式为:YY-MM-DD hh:MM AM/PMDIR列表中的日期格式是什么?这必须在多台具有不同区域设置的机器上工作,还是只在一台机器上工作?是的,只有一台机器…日期格式是:YY-MM-DD hh:MM AM/PM我们有非常相似的代码,尽管我在写我的代码时不知道你已经发布了。非常感谢!你的代码可以工作。您只是有一个语法错误-…echo(%( bracket@DextrousDave
echo
后面的括号是正确的,它比
echo工作得更好。
为了避免消息
echo关闭。
。好的,谢谢。您的脚本有问题。我对它进行了一些处理,当我将字符串从DATABASE SUCCESSFUL更改为DATABASE SUCCESSFUL时,它的日期值相同仍然运行另一个.bat文件…并且它不应该…基本上,它不显式地查找字符串“DATABASE SUCCESSFUL”,而是只查找“DATABASE”…因此即使我添加了“DATABASE BLABLA”,它得到了一个肯定的结果match@DextrousDave我更改了正则表达式,请立即尝试。我们有非常相似的代码,尽管我在编写我的代码时不知道您已经发布了。非常感谢!您的代码可以正常工作。您只是有一个语法错误-…echo(%…the( bracket@DextrousDave
echo
后面的括号是正确的,它比
echo工作得更好。
为了避免消息
echo关闭。
。好的,谢谢。您的脚本有问题。我对它进行了一些处理,当我将字符串从DATABASE SUCCESSFUL更改为DATABASE SUCCESSFUL时,它的日期值相同仍然运行另一个.bat文件…并且它不应该…基本上,它不显式地查找字符串“DATABASE SUCCESSFUL”,而是只查找“DATABASE”…因此,即使我添加了“DATABASE BLABLA”,它也会得到一个正值match@DextrousDave我换了正则表达式,请现在试试。