Небольшой пост из серии спрашивали - отвечаем.
Примечание: это работает только в версиях Windows, где командный процессор умеет в расширенную обработку команд, т.е., начиная с Windows 2000.
Расширенная обработка команд по умолчанию включена в Windows Server 2003/Windows XP, но может быть отключена через Реестр, так что для совместимости лучше ее включить явно:SetLocal EnableExtensions
Команда echo по умолчанию выводит на STDOUT, т.е., например, команда:echo I write to STDOUT
Выведет текст I write to STDOUT на STDOUT, да на мне капитанская фуражка :)
Для вывода текста на STDERR необходимо использовать переопределение вывода, синтаксис которого похож на аналогичный синтаксис в Linux, т.е. в современных Windows тоже есть три канала ввода/вывода, с номерами, аналогичными Linux, т.е.:1 - STDOUT2 - STDERR3 - STDIN
Стандартные потоки
Переопределяется вывод на STDERR конструкцией 1>&2, т.е. команда echo I write to STDERR 1>&2
Выведет текст I write to STDERR на STDERR.
BAT-файл writeto.bat целиком:@echo off
SetLocal EnableExtensions
rem This BAT file write in stdout and stderr
echo I write to STDOUT
echo I write to STDERR 1>&2
Для проверки работы BAT-файла можно создать тестовый BAT-файл, который будет вызывать файл
writeto.bat и перенаправлять потоки вывода STDOUT и STDERR в текстовые файлы.Содержимое файла
writeto_test.bat:@echo off
SetLocal EnableExtensions
rem This BAT file test for writeto.bat
call writeto.bat 1>_stdout.txt 2>_stderr.txtДанный файл надо создать в каталоге с
writeto.bat.После запуска файла
writeto_test.bat в текущем каталоге появятся файлы _stdout.txt и _stderr.txt со следующим содержимым:_stdout.txt:
I write to STDOUT
_stderr.txt:
I write to STDERR
ФАНФАРЫ!
Пример на GitHub
Это репост с сайта http://tolik-punkoff.com
Оригинал: https://tolik-punkoff.com/2021/10/14/zap