I know when we add the >>
after echo
the output works but in the command line itself it's hidden. I'd like to know if there is a way I can do both without duplicating my code. So it should show in the command line and the output file.
Echo ### Backing up Drivers >> %Drive%:\Backup\Backup-Log.txt
Ping 127.0.0.1 >nul
xcopy "%HOMEDRIVE%\drivers" /c /d /h /e /i /y "%Drive%:\Backup\Drivers" >> %Drive%:\Backup\Backup-Log.txt
echo ### Backing up the Registry... >> %Drive%:\Backup\Backup-Log.txt
if not exist "%Drive%\Registry" mkdir "%Drive%:\Backup\Registry"
if exist "%Drive%\Registry\regbackup.reg" Echo "Replacing %Drive%:\Backup\Registry\regbackup.reg" >> %Drive%:\Backup\Backup-Log.txt
if exist "%Drive%\Registry\regbackup.reg" del "%Drive%:\Backup\Registry\regbackup.reg" >> %Drive%:\Backup\Backup-Log.txt
regedit /c /d /h /e /i /y "%Drive%:\Backup\Registry\regbackup.reg" >> %Drive%:\Backup\Backup-Log.txt
Here is an explanation from an old answer of mine
for this purpose I use the following:
This is a bit tricky. So let's disassemble that line to four parts:
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
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.