0

尝试使用 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,都不起作用。

4

1 回答 1

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)

于 2013-10-18T20:28:45.520 回答