EventCreate с многострочным описанием

Я хотел бы использовать eventcreate из командного файла для регистрации результатов задания копирования файла (robocopy). Что я действительно хотел бы сделать, так это использовать выходные данные задания копирования файла в качестве описания события (/D of createevent). Проблема в том, что в выводе копии файла есть несколько строк, и мне удалось получить только одну строку в локальной переменной или команде конвейера.

Я пытался прочитать локальную переменную из файла, как

set /P myVar=<temp.txt

но он получает только первую строчку.

Как можно написать несколько строк в описании события из пакетного файла?

2 ответа

Решение

Вы должны проанализировать журнал и и изменить и CRLF просто LF (ctrl-l).

Вот пример:

EVENTCREATE /T ERROR /ID 1000 /l application /d "This is text^L this is line 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 =%

Скриншот:

Другие вопросы по тегам