На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Перед отправкой сообщения внимательно прочтите правила раздела!!!
1. Запрещается обсуждать написание вирусов, троянов и других вредоносных программ!
2. Помните, что у нас есть FAQ раздела Assembler и Полезные ссылки. Посмотрите, возможно, там уже имеется решение вашего вопроса.

3. Настоятельно рекомендуем обратить особое внимание на правила форума, которые нарушаются чаще всего:
  3.1. Заголовок темы должен кратко отражать её суть. Темы с заголовками типа "Срочно помогите!" или "Ассемблер" будут отправляться в Корзину для мусора.
  3.2. Исходники программ обязательно выделяйте тегами [code]...[/code] (одиночные инструкции можно не выделять).
  3.3. Нежелательно поднимать старые темы (не обновлявшиеся более года) без веской на то причины.

Не забывайте также про главные Правила форума!

Добро пожаловать и приятного вам общения!!! ;)
 
Модераторы: Jin X, Qraizer
Страницы: (2) 1 [2]  все  ( Перейти к последнему сообщению )  
> Что есть ERRORLEVEL как таковой?
    2 Drew: ERRORLEVEL уничтожается до запуска следующей команды....

    Более или менее подходящий способ для тебя - это сесть на ah=4Dh/int21h и сохранить этот код в своих внутренних переменных. А потом (при повторном запуске, скажем, с каким-нибудь ключём) выполнять то, что тебе нужно, выгрузив TSR из памяти :)
    Т.е:
    ExpandedWrap disabled
      @echo off<br>ТвояПрога /install<br>КакуюПрогуНадоПроверить<br>ТвояПрога /check

    Или (что ещё лучше) сделать программу, которая запускает прогу, указананную в коммандной строке (только напрямую, не через COMMAND.COM /C), а потом проверять код....
    Сообщение отредактировано: 7in -
      бредовая мысль - есть программы, преобразующие BAT в COM .... как у них
      с ErrorLevel? .... если 'хорошо', то ... :)
        ... ага... ВОТ!!!!

        DOS сохраняет полученный ею код возврата завершившегося процесса в одной из системных таблиц до тех пор, пока его не затребует родительская программа. После этого код возврата сбрасывается.
        Если программа запускается с клавиатуры (командой оператора), родительским процессом является COMMAND.COM, котрый и принимает код завершения (и, впрочем, НИЧЕГО с ним не делает)....

                                                    К.Г.Финогенов. Самоучитель по системным функциям MS-DOS 3-е издание, стр 186.

        ГДЕ ТА САМАЯ "СИСТЕМНАЯ ТАБЛИЦА"?
          Ну какая тебе разница?! После COMMAND.COM'а там всё равно будет ноль!!!
            Drew, ну.. есть int 21, функция 52 (всё 16-ричное). Читай Ральфа Брауна. Но, поверь мне, это извращение. Легче просто написать прогу, которая пускала бы соответствующие проги. Зачем тебе всё это нужно, кстати?
              Цитата Kernel Panic, 22.05.02, 00:07:46
              Легче просто написать прогу, которая пускала бы соответствующие проги. Зачем тебе всё это нужно, кстати?


              Всё просто - ГЛАВНОЕ (и, пожалуй единственное) преимущество пакетного файла (BAT), что он не нуждается в перекомпиляции и довольно быстро модифицируется даже не слишком искушенным программером.

              я по работе часто сталкиваюсь в такими ситуёвинами, что меняется состав программ, возвращающих ERRORLEVEL, да и памяти для программы, возвращающей EL просто нет, чтобы запустить её как виртуальный модуль (spawnXXX)

              поэтому приходится общаться через окружение COMMAND.com или ERRORLEVEL

              ДА ! О ПТИЧКАХ ! Оставим мелкомягким ИХ проблемы с ERRORLEVEL !

              КТО ЗНАЕТ, КАК ПОПАСТЬ В MCB COMMAND.COM, чтобы изменить КОРЕННУЮ ПЕРЕМЕННУЮ ОКРУЖЕНИЯ, А НЕ ЕЁ КОПИЮ!??
                Вызываешь ah=52h/int21h, далее делаешь mov es,es:[bx-2], получаешь в es адрес первого MCB, далее сканнируешь их и ищешь Environment COMMAND.COM'а :)
                Сообщение отредактировано: 7in -
                  Всё было бы чудно, ежели бы не эта НЕДОКУМЕНТИРОВАННАЯ функция.... она возвращает адрес списка списков  по ES:[BX] !!!
                  а вот ЧТО она возвращает по ES:[BX-2] ???
                  поясни, пожалуйста. Я посмотрел - там ES:[BX-2] ваще бредятина какая-то... которая НИКУДА не указывает...  :-[
                  Сообщение отредактировано: Drew -
                    В es:[bx-2] находится сегмент первого MCB (1 слово).... Это есть в TechHelp'е....
                    Сообщение отредактировано: 7in -
                      про адрес сегмента и про то, что МСВ выравнивается по границе этого сегмента, я в курсах, только я также знаю структуру МСВ, а то, что ТАМ - ни на что не похоже...

                      25.05.2002

                      Посмотрел внимательнее... ТАМ МСВ типа М (не ПОСЛЕДНИЙ то есть) и НЕ MCB COMMAND.COM... потом нашел FCB COMMAND.COM, но сменить переменную окружения так и не удалось.... то есть сменил, но, по команде SET на экран выползли СТАРЫЕ значения переменных...
                      Сообщение отредактировано: Drew -
                      1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                      0 пользователей:


                      Рейтинг@Mail.ru
                      [ Script execution time: 0,0273 ]   [ 14 queries used ]   [ Generated: 17.05.24, 03:49 GMT ]