带有多行描述的 eventcreate

带有多行描述的 eventcreate

我想使用批处理文件中的 eventcreate 来记录文件复制作业 (robocopy) 的结果。我真正想做的是使用文件复制作业的输出作为事件的描述 (createevent 的 /D)。问题是,文件复制输出中有多个行,而我只能将一行放入局部变量或管道命令中。

我尝试从文件中读取局部变量,例如

set /P myVar=<temp.txt

但它只得到第一行。

如何从批处理文件中写入多行事件描述?

答案1

您必须解析日志并将 CRLF 更改为 LF(ctrl-l)。

以下是一个例子:

EVENTCREATE /T ERROR /ID 1000 /l application /d "This is text^L this is line 2"

答案2

您可以构造一个多行变量你自己,叫!LF!这篇文章详细解释了换行符破解/CMD解析器的工作原理。

@echo off
SETLOCAL EnableDelayedExpansion

(set LF=^
%=--------DO NOT remove this line. Expands to nothing--------=%
)
set "lines=" reset LINES to 0
set "in=temp.txt"


call :readlines "%in%" lines

<"%in%" (FOR /L %%# in (1 1 %lines%) do (
    set "data="                                ::clear DATA
    set/p"data="                               ::read from IN
    set "fileContent=!fileContent!!data!!LF!"  ::manually construct multi-line variable
)) %= read file by lines via SET /P =%

EVENTCREATE /T ERROR /ID 1000 /l application /d "!fileContent!"
exit /b


:readlines FILE VAR
FOR /F %%L in ('
"findstr /N "^^" "%~1" %= do not skip empty lines =%"
') do set/a"%~2+=1" %= Get the # of lines =%

截屏:

相关内容