Это вариант на предыдущем ответе от MTS, однако он добавляет некоторые функции, которые могут быть полезны другим. Вот метод, который я использовал:
set _Temp_Msg_Cmd=
команда сбрасывает redirection с использованием символа моркови ^
, чтобы исходные команды не оценивались первоначально %~n0_temp.txt
, который использует синтаксис расширения параметра командной строки %~n0
, чтобы получить имя командного файла. %~n0_log.txt
Ниже приведена последовательность команд:
^> %~n0_temp.txt 2^>^&1
^& type %~n0_temp.txt ^>^> %~n0_log.txt
в окне команд ^& type %~n0_temp.txt
^& del /Q /F %~n0_temp.txt
Вот пример:
set _Temp_Msg_Cmd= ^> %~n0_temp.txt 2^>^&1 ^& type %~n0_temp.txt ^>^> %~n0_log.txt ^& type %~n0_temp.txt ^& del /Q /F %~n0_temp.txt
Таким образом, команда может просто добавляться после более поздних команд в пакетном файле, который выглядит намного чище:
echo test message %_Temp_Msg_Cmd%
Это может быть добавлено и к концу других команд. Насколько я могу судить, это будет работать, когда сообщения имеют несколько строк. Например, следующая команда выводит две строки, если появляется сообщение об ошибке:
net use M: /D /Y %_Temp_Msg_Cmd%