фар "съедает" код возврата программы

Здесь обсуждаются темы, косвенно связанные с Far.
Post Reply
xeno.by
Posts: 14
Joined: Sun 16 Oct, 2011 19:49

фар "съедает" код возврата программы

Post by xeno.by »

Обнаружил непонятное поведение, которое воспроизводится везде, где я пробовал: в основной версии фара (2.0.1807 х86), в текущей ночной сборке 2.0 (far2.1807bis23.x86.x64.7z), в текущей ночной сборке 3.0 (far3.2269bis.x86.x64.7z). Решил запостить свои впечатления именно в этот раздел форума, ибо не уверен, что это баг.

Написал маленькую консольную прожку на сишарпе, скомпилировал, запускаю в фаре. Аргументы командной строки специально вбил невалидные, чтобы протестировать код ошибки. Программа корректно рапортует об ошибке, смотрю %errorlevel%, а там ноль. Как так?! Несколько раз убеждаюсь, что все в порядке в коде программы, снова запускаю - снова ноль. Точно убеждаюсь, что программа действительно консольная, а не гуевая (мало ли) - все ок, консольная.

Открываю cmd.exe в отдельном окне (вне фара). Запускаю программу с невалидными аргументами, делаю echo %errorlevel% - ура, на консоль выводится 10! Протираю глаза, переключаюсь в фар, запускаю прожку - ноль.

Что я мог упустить? Почему так получается? Я не аттачил мою аппликуху и не приводил детали потому, что подозреваю, что не догоняю чего-то очевидного. Если по результатам обсуждения выяснится, что надо оформить полноценный баг репорт, с удовольствием это сделаю.
AlexII
Posts: 270
Joined: Mon 10 Apr, 2006 00:53
Location: станица Григорополисская
Has thanked: 147 times
Contact:

Re: фар "съедает" код возврата программы

Post by AlexII »

xeno.by, либо пакетный файл, либо одной строкой:

Code: Select all

setlocal enabledelayedexpansion & <c:\boot.ini find.exe "Мама мыла раму" & echo !errorlevel!
Або вовсе отказаться от переменных:

Code: Select all

@ <c:\boot.ini find.exe "Мама мыла раму" && echo Yes || echo No
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: фар "съедает" код возврата программы

Post by DrKnS »

подозреваю, что не догоняю чего-то очевидного
Именно.
%errorlevel% - внутренняя псевдопеременная cmd.exe. Причём здесь Far?
Post Reply

Return to “Операционные системы, командные оболочки и прочее”