
Я создал пакетный скрипт, который перезапускает исполняемый файл, и пытаюсь заставить его выводить данные в файл журнала, показывающий любые ошибки.
Мой сценарий
@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 для перенаправления в файл журнала.