У меня есть процесс, который мне нужно запустить в командном файле. Этот процесс производит некоторую продукцию. Мне нужно и вывести этот вывод на экран, и отправить (передать) его в другую программу.
В методе bash используется tee
:
echo 'ee' | tee /dev/tty | foo
Есть ли аналог для Windows? Я счастлив использовать PowerShell при необходимости.
Существуют tee
порты для Windows, но, по-видимому, нет эквивалента для /dev/tty
, что усложняет ситуацию.
Конкретный вариант использования здесь: у меня есть программа (launch4j), которую мне нужно запустить, отображая вывод для пользователя. В то же время мне нужно уметь обнаруживать успех или неудачу в сценарии. К сожалению, эта программа не устанавливает код выхода, и я не могу заставить его сделать это. Мой текущий обходной путь включает в себя конвейер для find
и поиска в выходных данных (launch4j config.xml | find "Successfully created"
), однако это поглощает вывод, который мне нужно отобразить. Поэтому мне нужен какой-то способ как отобразить на экране, так и отправить выходные данные команде - и эта команда должна иметь возможность установить ERRORLEVEL
(она не может работать асинхронно). Это будет использоваться в скрипте сборки, который может быть запущен на разных компьютерах.
Для этого конкретного случая требуется что-то более легкое - я не могу установить дополнительные каркасы или интерпретаторы (например, perl, как предлагается в этом ответе). Кроме того, любые коммерческие программы должны иметь лицензию, которая позволяет распространять.