Требуется помощь с пакетным скриптом

Требуется помощь с пакетным скриптом

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

Мой сценарий

@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, поскольку содержат символ, не входящий в кодировку Base-64, более двух символов заполнения или не являющийся пробелом символ среди символов заполнения». Но мой файл журнала не показывает эту ошибку, он просто показывает, что мой исполняемый файл был запущен с отображением даты и времени. Я пробовал вставить символ & в >>& %logfile%, но тогда я не вижу сообщения об ошибке в окне cmd, и мой журнал также не показывает его.

Кто-нибудь видит, где я ошибаюсь?

решение1

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

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

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

Больше информации

Связанный контент