Страницы

Поиск по вопросам

вторник, 16 июля 2019 г.

Почему возвращается неправильный %errorlevel%?

Я использую такую старенькую утилитку time-mem для измерения времени выполнения какой-то команды из командной строки. Это просто проект на с++, основной код здесь
Начинаю проверять, для теста запускаю timemem 7z some-err-str. Понятно выводится ошибка, показывает код 7, возвращается этот код. Но в батнике, если сразу за этой командой вывести echo %errorlevel%, получаю 0.
Сам батник:
timemem 7z some-err-str rem timemem возвращает 7. А выводится на экран 0 echo %errorlevel%
В общем ведёт себя также, как похожая утилита ptime.
Почему, у меня нет объяснения. И главное, как можно исправить?


Ответ

Проблема была в ерунде. В c++ коде функция info() всегда возвращала 0. А именно результат этой функции определяет код возврата программы. Поменял в самом конце info()
return 0;
на
return dwExitCode;
Стало правильно. Сбивало ещё что, в консоль выводился правильный код возврата, а реально возвращался 0.

Комментариев нет:

Отправить комментарий