1. Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.

    Скрыть объявление
  2. Пожалуйста, внимательно прочитайте правила раздела.
  3. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление

Soft Определить кол-во памяти в DOS и передать как переменную

Тема в разделе "Hard & Soft", создана пользователем tuliss, 12 июн 2018.

  1. tuliss

    tuliss

    Регистрация:
    24 фев 2014
    Сообщения:
    5.975
    В общем, то ли я забыл, то я не знал но нужно в переменную на .bat файлах передать кол-во памяти в машине.

    Пока остановился на самом тупом варианте mem.exe | find "Total memmory"
    Но он показывает целую строку, мне надо конкретное число.
    Скорее всего решу путем утилит из freedos, например xgrep (которая из мира linux/unix) но у меня возник вопрос. Неужели в те времена таких задач не было ? Что-то как-то верится слабо. Yandex , google да и другие поисковики уже увы не ищут такие старые результаты, кое как намеками что-то можно найти в usenet и fido да в старых журналах. Но вот такое решение как парсер для DOS я не встречал. Хотя видимо я все же плохо искал или не сталкивался с утилитами в каких либо продуктах, которое такое делают.

    В общем есть у к кого какие мысли о решение задачи , другим путем ?
     
  2.  
  3. MisterGrim Very old

    MisterGrim

    Legacy

    Регистрация:
    29 ноя 2007
    Сообщения:
    25.423
    В те времена готовых решений не искали, а садились и писали COM-файл на десяток ассемблерных строк.
     
    Goblinit, Bato-San и Grue13 нравится это.
  4. SMArt Страшила мудрый

    SMArt

    Супер-модератор

    Регистрация:
    19 фев 2006
    Сообщения:
    2.783
    Можно обернуть в FOR /F "tokens=3" %i in ('mem.exe | find "Total memory") do... Только так можно хоть как-то отпарсить в bat вывод например в файл или переменную. tokens=3 потому, что первые два это Total и memory. Но mem выдает значение с запятой, если памяти больше 999 k (например 1,024)

    Писал на память. Для употребления в командном файле там надо проценты и кавычки вроде экранировать. Сейчас лень и некогда лезть в справку.
     
    Последнее редактирование: 12 июн 2018
    Goblinit и tuliss нравится это.
  5. MisterGrim Very old

    MisterGrim

    Legacy

    Регистрация:
    29 ноя 2007
    Сообщения:
    25.423
    @SMArt, а в DOS это точно сработает?
     
  6. SMArt Страшила мудрый

    SMArt

    Супер-модератор

    Регистрация:
    19 фев 2006
    Сообщения:
    2.783
    Насчет MS-DOS 1.0 не уверен, но в 6.22 команда FOR уже точно есть.
     
  7. tuliss

    tuliss

    Регистрация:
    24 фев 2014
    Сообщения:
    5.975
    Да все работает. Я как-то забыл , что в DOS есть циклы :) Ну вот вылетело уже из головы.
    Но увы, как ты и сказал "," отбрасывает все. В общем это не очень хорошо, так как хотелось бы число полное, что бы можно было сравнить.
    Хотя с учетом, что на 80386 уж точно будет 1 метр памяти, можно и положить болт. Для 80286 сделать отдельное меню загрузки. Все равно, половина вещей в 80286 не будет запускаться как и в 8086/88. Но хотелось бы более красиво !

    1.png

    Все поправил. Можно же задать диапазон в tokens 3-4 и задать в конце еще одну переменную %%j например :)


    1moho.JPG
     
    Последнее редактирование: 13 июн 2018
  8. tuliss

    tuliss

    Регистрация:
    24 фев 2014
    Сообщения:
    5.975
    Дополнение. Я использую 4dos , вместо command.com
    Обычный command.com не знает ничего о tokens. По крайне мере в версии PC-DOS 7 версии.
     
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление