如何将这样的命令输出到变量

How can get output of command like this to a variable

如何将此命令的输出输出到变量。

wevtutil qe system "/q:*[System [(EventID=1074)]]" /rd:true /f:text /c:1 | findstr /i "date"

我的解决方案不起作用

FOR /F %i IN ('wevtutil qe system "/q:*[System [(EventID=1074)]]" /rd:true /f:text /c:1 | findstr /i "date"') DO set VARIABLE=%i
echo %VARIABLE%

运算符需要在括号中进行转义。 |变成 (^|),也变成 ( ^& ^> ^^ )

您必须“转义”| 以告诉解析器它是内部命令的一部分 (for ... in ('command') ...)。如果不转义,它会过早结束 for 命令,导致 script-breaking 错误。

同样在批处理文件中,您必须将元变量的 % 加倍。

第三,for 仅获取第一个标记(“单词”),但没有指定要使用的标记以及使用哪些定界符来分隔它们。

@echo off
FOR /F "delims=" %%i IN ('wevtutil qe system "/q:*[System [(EventID=1074)]]" /rd:true /f:text /c:1 ^| findstr /i "date"') DO set VARIABLE=%%i
echo %VARIABLE%

要仅获取日期,请使用 "tokens=2" 而不是 "delims="(获取第二个标记(“单词”),使用标准分隔符 space、制表符、逗号)