я запускаю сервер из пакетного файла, и я хочу, чтобы вывод сервера отображался как на экране, так и в файле журнала. Я нашел способ сделать это с ответ:
powershell "startmyserver | tee server.log"
проблема в том, что канал вызывает выполнение первой команды и ее полное завершение перед выполнением второй команды. Это означает, что я не могу контролировать stdout моего сервера, пока он фактически работает, что я и пытаюсь сделать (я не хочу закрываться вниз по серверу, чтобы проверить последние сообщения журнала).
для более простого примера я попробовал pause
. Ну,pause
Не существует в Powershell, поэтому мне пришлось запускать его внутри вложенного cmd
shell:
powershell "cmd /c pause | tee test.txt"
неудивительно, что после выполнения этой команды я просто получаю мигающий курсор. Через некоторое время я нажимаю клавишу, а затем появляется "нажмите любую клавишу для продолжения" и почти одновременно записывается в файл.
что я хочу случается труба для того чтобы течь линия stdout линией к следующей команде. Другими словами, всякий раз, когда он встречает символ EOL, он должен отправить некоторый вывод, и это должно (в моем случае tee
) вызывает появление текста на экране и одновременную запись в файл. (На самом деле, я даже не беспокоюсь о том, написан ли текст в файл построчно, он может быть написан в конце, хотя это не было бы идеально. Я просто хочу, чтобы иметь возможность видеть линии на экране, как они пишутся.)
это возможно в командной строке и / или Powershell?