在批处理文件中运行日志解析器会出现-i:EVT开关问题

时间:2013-10-18 20:16:40

标签: batch-file cmd logparser

尝试使用logparser执行批处理文件时出现意外错误。

我知道冒号在批处理文件中用作标签,而双冒号用于评论。但是当冒号出现在这样的开关中时会发生什么:

for /f "tokens=1,2 delims=," %a in (servers.txt) do "C:\Program Files\Log Parser 2.2"\logparser -i:EVT "SELECT TimeGenerated,EventID,EventType,SourceName,ComputerName,Message FROM \\%a\%b WHERE TimeGenerated > TO_TIMESTAMP(SUB(TO_INT(SYSTEM_TIMESTAMP()),118800))AND EventID BETWEEN x AND y ORDER BY TimeGenerated DESC" -stats:OFF 

如果我直接运行logparser命令,它运行正常。但是在批处理文件中运行会给出:

“此时EVT出人意料。”我如何让cmd解释为“-i:EVT”,因为它将在批处理文件之外?

我如何逃避?

我试过-i ^:EVT和-i ^^:EVT,两者都不起作用。

1 个答案:

答案 0 :(得分:0)

当您尝试从脚本运行时,您需要复制For变量%字符,请尝试以下操作:

for /f "tokens=1,2 delims=," %%a in (servers.txt) do "C:\Program Files\Log Parser 2.2"\logparser -i:EVT "SELECT TimeGenerated,EventID,EventType,SourceName,ComputerName,Message FROM \\%%a\%%b WHERE TimeGenerated > TO_TIMESTAMP(SUB(TO_INT(SYSTEM_TIMESTAMP()),118800))AND EventID BETWEEN x AND y ORDER BY TimeGenerated DESC" -stats:OFF

如果您的原始代码运行正常从CMD运行,则修改将从脚本运行,无论如何我会建议您在此部分"C:\Program Files\Log Parser 2.2"\logparser中包含错误的目录路径,并且还要避免解释您可以考虑在DO关键字之后对命令进行合并的错误,例如:Do (This)