Batch-File
帶有多行描述的事件創建
我想使用批處理文件中的 eventcreate 來記錄文件複製作業(robocopy)的結果。我真正想做的是使用文件複製作業的輸出作為事件的描述(/D of createevent)。問題是,文件複製輸出中有多行,而我只能將一行放入局部變數或管道命令。
我試過從文件中讀取一個局部變數,比如
set /P myVar=<temp.txt
但它只得到第一行。
如何將多行寫入批處理文件中的事件描述?
您必須解析日誌並將 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 =%