Here is an explanation from an old answer of mine
for this purpose I use the following:
set LogFile=somepathlogfile.txt
set logg=^> _^&^& type _^&^&type _^>^>%LogFile%
echo this goes to screen AND file! %logg%
This is a bit tricky. So let's disassemble that line to four parts:
set logg= ^> _ ^&^& type _ ^&^&type _^>^>%LogFile%
The Idea is to print the line to a temporary file (named "_") (second part) then type the contents of that file to screen (third part) then type it to the logfile (fourth part).
Put that all to a variable (first part), so you don't have to type that monsterstring to every line. (this is the reason why the ">" and "&" are escaped with "^")
So every time you use
echo whatever %logg%
it will appear on the screen AND write to %logfile%
You can find the complete answer here: How do I make a log of all ECHO commands in a BATCH file?
NOTES:
one &
is enough, so instead of ^&^&
write only ^&
The disadvantage is: it generates Disk-IO every time, you use it.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…