1

Я создал пакетный скрипт, который перезапускает исполняемый файл, я пытаюсь получить его для вывода в файл журнала, показывающий любые ошибки.

Мой сценарий

@echo on

timeout /t 03

set logfile=c:\users\administrator\desktop\C4W\Logs\status.log
echo starting system.exe at %date% %time% >> %logfile%
"./system.exe" -connection "sql instance" -model "model number" -username "admin" -password "" -id 2  >> %logfile%

Pause

Exit 0

Как видите, мой исполняемый файл подключается к экземпляру SQL и модели в базе данных SQL. когда я запускаю командный файл, на экране появляется сообщение об ошибке: «Введенная строка не является допустимой строкой Base-64, так как содержит не базовый 64-символ, более двух символов заполнения или непустой символ пробела среди заполнения персонажи". Но мой файл журнала не показывает эту ошибку, он просто показывает, что мой исполняемый файл запущен с отображением даты и времени. Я попытался поместить символ & в >> &% logfile%, но затем я не вижу сообщения об ошибке в окне cmd, и мой журнал также не показывает его.

Кто-нибудь может увидеть, где я иду не так?

1 ответ1

1

Чтобы перенаправить вывод ошибок команды в файл журнала вместе со стандартным выводом, добавьте >>logfile.txt 2>>&1 к вашей команде, например так:

yourcommand.exe >>logfile.txt 2>>&1

Синтаксис 2>>&1 необходим для "объединения" потоков StdOut и SteErr для перенаправления в файл журнала.

Дополнительная информация

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .