nhmb – это программа, которая показывает окно сообщения MessageBox и используется в bat файлах для более удобной работы пользователя, например:

Возможности nhmb

nhmb позволяет задать все данные через параметры командной строки, поэтому отлично подходит для командных файлов..

По завершении программа nhmb возвращает код нажатой кнопки (IDOK, IDCANCEL и т.д.), по которому командный файл выполняет соответствующие команды.

В программе nhmb имеется таймер для выполнения действия, назначенного по умолчанию, если пользователь не сделал никакого выбора – командный файл продолжит свою работу вместо бесконечного ожидания.

Пример nhmb – вывод сообщения

Сообщение-информация с текстом Архивирование выполнено и заголовком Архивирование:

nhmb "Архивирование выполнено" Архивирование Information

Первый параметр задает текст сообщения и заключен в кавычки, т.к. содержит пробелы. Если требуется вставить символы форматирования, следует использовать \n для перевода строки и \t для табуляции.

Второй параметр задает заголовок окна сообщения и должен быть заключен в кавычки, если содержит пробелы.

Третий параметр указывает, что должен быть использован значок Information и кнопка OK.

вывод сообщения в nhmb

Так как не задано время ожидания, программа не завершится до тех пор, пока пользователь не нажмет на кнопку.

Пример nhmb с тайм-аутом

Сообщение-вопрос Доступ к базе данных будет закрыт. Продолжить? с кнопками Да/Нет и тайм-аутом 3 минуты:

nhmb "Доступ к базе данных будет закрыт. Продолжить?" "Подтвердите запуск" ^
"Question|YesNo|DefButton2" 180

Третий параметр задает значок-вопрос (Question)и кнопки Да/Нет, причем кнопка Нет будет кнопкой по умолчанию (DefButton2).

Четвертый параметр задает время ожидания 3 минуты (180 секунд). В заголовке окна будет идти отсчет оставшегося времени. Если пользователь нажмет Да или Нет, то программа вернет соответственно IDYES или IDNO. Если пользователь не в течение трех минут не нажмет никакую кнопку, то программа закроется сама и вернет IDNO.

вопрос с выбором Да/Нет в nhmb

Пример nhmb – обработка кода нажатой кнопки

Обработка кода нажатой кнопки заключается в сравнении кода возврата с кодами IDOK, IDCANCEL и т.д. (их численные значения указаны в справке программы). Для предыдущего примера можно написать следующий командный файл:

nhmb "Доступ к базе данных будет закрыт. Продолжить?" "Подтвердите запуск" ^
 "Question|YesNo|DefButton2" 180
if errorlevel 7 goto End
if errorlevel 6 goto Begin
goto End
:Begin
rem Собственно действия с базой данных...
:End

Командный файл сравнивает результат выполнения сначала с кодом IDNO (значение 7), затем IDYES (значение 6) и передает управление соответственно на завершение файла или на выполнение действий с базой данных.

Почему nhmb

По сравнению с другими вариантами вывода всплывающего окна сообщения в bat файле, такими как скрипт WSH/VBScript, программа nhmb имеет несколько преимуществ:

Возможности оформления

Все типы значков

Все комбинации кнопок

Текст с переводами строк и TAB

Функция таймера

Отображение оставшегося времени в заголовке

Выполнение команды по умолчанию

Режим без кнопок

Простота использования

Не требует ни программирования, ни подбора параметров – строку запуска можно сформировать в онлайн генераторе

Командная строка

Параметры командной строки

nhmb.exe [-esc:<упр.символ>] <текст сообщения> <заголовок> <флаги> [<ожидание>]

  -esc:<упр.символ>     Позволяет задать управляющий символ для перевода 
                        строки и табуляции вместо используемой по умолчанию
                        обратной косой черты.

  <текст сообщения>     Текст сообщения

  <заголовок>           Текст заголовка

  <флаги>
    Вид значка
      Information       Значок с символом i
      Question          Значок с вопросительным знаком
      Warning           Значок с восклицательным знаком
      Error             Значок со знаком STOP
    Кнопки:
      Ok                ОК (по умолчанию)
      OkCancel          ОК, Отменить
      RetryCancel       Повторить, Отменить
      YesNo             Да, Нет
      YesNoCancel       Да, Нет, Отменить
      AbortRetryIgnore  Прервать, Повтор, Пропустить
      CancelTryContinue Отменить, Повторить, Продолжить
      NoButtons         Без кнопок
    Кнопка по умолчанию:
      DefButton1        Первая кнопка
      DefButton2        Вторая кнопка
      DefButton3        Третья кнопка
      DefButton4        Четвертая кнопка

    <ожидание>          Время ожидания выбора пользователя в секундах

Код возврата 
  1   IDOK              Была нажата кнопка ОК
  2   IDCANCEL          Была нажата кнопка Отменить
  3   IDABORT           Была нажата кнопка Прервать
  4   IDRETRY           Была нажата кнопка Повтор
  5   IDIGNORE          Была нажата кнопка Пропустить
  6   IDYES             Была нажата кнопка Да
  7   IDNO              Была нажата кнопка Нет
 10   IDTRYAGAIN        Была нажата кнопка Повторить
 11   IDCONTINUE        Была нажата кнопка Продолжить

Генератор строки запуска

Используйте этот генератор для формирования командной строки программы nhmb и скопируйте готовую команду в ваш bat файл.



Выберите значок
 
 
 
 

 

Выберите кнопки






Выберите кнопку по умолчанию



Таймер обратного отсчета


Командная строка

nhmb.exe "Message text line #1\nMessage text line\t(TAB) #2\nMessage text line #3" "Caption" "Information|Ok" "60"

Справочная информация

Описание параметров, коды кнопок можно посмотреть в описании функции MessageBox.

Узнать больше

Загрузка nhmb

Прямая ссылка для скачивания nhmb

zip архив с исполняемым файлом, программа не требует установки, работает в Microsoft Windows 10 и старше.

Наши соцсети

32 мыслей о “nhmb – окно сообщения для bat файлов

  • 05.11.2023 в 09:37
    Постоянная ссылка

    Доброго времени суток! А возможно так сделать, чтобы при запуске не было вообще никаких кнопок по типу «OK, Отмена» и т.д. В общем просто окно которое будет закрываться через некоторое время (по таймеру).

    Ответ
    • 07.11.2023 в 23:03
      Постоянная ссылка

      Добрый день, в настоящее время такой возможности нет — программа предоставляет функции стандартного системного окна. Посмотрю, как можно это изменить, то есть чтобы пользователь не мог закрыть сообщение.

      Ответ
  • 11.12.2022 в 13:02
    Постоянная ссылка

    При загрузке ПК у меня не всегда срабатывает таймер ожидания: Окно программы с вопросом ожидания открывается, но таймер нажатия кнопки по умолчанию не запущен. Соответственно, кнопка по умолчанию сама не нажимается.

    Ответ
      • 13.12.2022 в 00:39
        Постоянная ссылка

        Ну вот сейчас позапускал батник вручную: 15 из 15 запусков запустилось с работающим таймером. А при запуске ПК, когда батник лежит в автозагрузке, таймер не запускается в 50% случаев. Windows 10 корпоративная 2016

        Ответ
          • 18.12.2022 в 00:12
            Постоянная ссылка

            поставил timeout /t 30 перед запуском утилиты, стало лучше: из 5 загрузок, только 1 раз не сработал таймер

          • 20.12.2022 в 05:18
            Постоянная ссылка

            Получается, такой вариант «отложенной» загрузки.
            Сделал новую версию с изменением в части таймера, заодно исправил пару ошибок.
            Напишите, пожалуйста, как работает таймер.

  • 09.07.2020 в 11:09
    Постоянная ссылка

    Здравствуйте.
    Вопрос по отработке нажатой кнопки.
    Хочу чтобы появлялось первое окно с вопросом Да/Нет, и если было нажато Да, то появлялось сообщение с кнопкой Ок.
    Можно ли так сделать?
    У меня такой код (такой же как в примере):
    @echo off
    start nhmb «Остановить программу?» «Stop» ^
    «Question|YesNo» 5
    if errorlevel 6 goto Begin
    if errorlevel 7 goto End
    goto End
    :Begin
    *тут что-то нужно написать, чтобы появлялось сообщение, что программа остановлена и кнопка ОК*
    :End
    exit
    (останавливать ничего не нужно, это шуточное сообщение будет)
    Подскажите, пожалуйста, как правильно написать концовку кода.

    Ответ
    • 09.07.2020 в 22:39
      Постоянная ссылка

      Здравствуйте, команда
      nhmb "Программа остановлена" "Заголовок" "OK|information"
      показыает окно с сообщением и кнопкой ОК.

      Ответ
      • 10.07.2020 в 13:24
        Постоянная ссылка

        Что-то не получается(
        Еще раз что хочу: сначала появляется окно с выбором да/нет. Потом, если в первом окне было нажато «да», появляется второе окно с кнопкой ок. Если выбрано нет, то ничего не происходило.
        У меня сейчас такой код (ниже) и два окна появляются одновременно, а я хочу, чтобы последовательно.
        start nhmb "Остановить программу?" "Stop" "YesNo"
        if errorlevel 6 goto Begin
        if errorlevel 7 goto End
        :Begin
        nhmb "Программа остановлена" "Заголовок" "OK"
        :End

        Ответ
        • 11.07.2020 в 08:11
          Постоянная ссылка

          Это потому что первое окно запускается через start, он здесь не нужен. И условия if у вас не в том порядке.
          nhmb "Остановить программу?" "Stop" "YesNo"
          if errorlevel 7 goto End
          :Begin
          nhmb "Программа остановлена" "Заголовок" "OK"
          :End

          Ответ
          • 13.07.2020 в 09:15
            Постоянная ссылка

            Супер! Спасибо!
            Если еще научите скрывать консольное окно, то вообще будет идеально.
            Раньше я юзал команду start, но теперь её нельзя использовать.
            Я не понял куда вставлять тот скрипт, что вы ниже в комментариях писали.
            Помогите, пожалуйста, решить вопрос с консольным окном — буду очень благодарен.

  • 22.11.2018 в 20:59
    Постоянная ссылка

    Здравствуйте. Подскажите, можно ли как-то сделать подавление командной строки? «@echo off» не срабатывает.

    Ответ
      • 22.11.2018 в 22:29
        Постоянная ссылка

        Да, необходимо скрыть консольное окно. Не совсем понятно, куда нужно добавить строки из скрипта по вашей ссылке. Имею следующий батник:

        @echo off
        setlocal enableextensions enabledelayedexpansion
        set "sSourceFolder=folder 3"
        2>nul md "%sSourceFolder%"
        xcopy.exe /e /i /y ".\folder 1\folder 2\%sSourceFolder%" "%sSourceFolder%"
        nhmb "Установлено управление контроллером XBOX" "Уведомление" ^
         "Information|OK|DefButton1" 0
        endlocal
        exit /b 0
        Ответ
        • 23.11.2018 в 21:36
          Постоянная ссылка

          Это команды для запуска bat файла.

          Скрипт my.js запускает bat файл, чтобы не показывалось окно:

          var wsh_shell = WScript.CreateObject("WScript.Shell");
          var result = wsh_shell.Run("my.cmd",0,true);

          Сам скрипт лучше запускать через wscript

          wscript.exe my.js

          Эту команду можно вставить, например, в ярлык или т.д.

          Ответ
        • 23.11.2018 в 21:54
          Постоянная ссылка

          кстати, в данном случае можно и проще сделать, если запускать через start

          start nhmb ...

          тогда перед выходом запустится nhmb в отдельном окне, а bat закроется. Это если нужно, чтобы окно закрылось сразу после выполнения xcopy, но до завершения nhmb.

          Ответ
  • 01.11.2017 в 13:03
    Постоянная ссылка

    Здравствуйте! Спасибо за программу, подскажите, а можно-ли сделать такое — же сообщение, только на перезагрузку системы? С таймером и возможностью отмены?

    Ответ
    • 01.11.2017 в 14:27
      Постоянная ссылка

      Добрый день! Перезагрузку или выключение компьютера с запросом пользователя и с тайм-аутом можно сделать комбинацией nhmb и nhss, то есть по отмене выходить из bat файла, а по тайм-ауту или подтверждению запускать nhss -r.

      Ответ
  • 28.06.2016 в 15:08
    Постоянная ссылка

    Спасибо за программу!
    Есть предложение добавить в программу несколько звуков с регулировкой их длительности и выводом на динамики (не на встроенную «пищалку», т.к. у многих современных ПК она отсутствует) .
    Средствами CMD этого не добиться :(

    Ответ
    • 30.06.2016 в 06:05
      Постоянная ссылка

      Есть же стандартные звуки, которые проигрываются при открытии окна сообщения, они настраиваются в панели управления (восклицание, вопрос и т.д.), или вопрос о чем-то другом?

      Ответ
  • 09.01.2016 в 19:56
    Постоянная ссылка

    Спасибо! Есть предложение, при возможности, добавить параметр времени неактивности кнопок — т.е., если в момент появления окна будет случайно нажата клавиша enter или пробел, это не привело к ошибочному выбору до прочтения сообщения (как, например, в Firefox, при загрузке файла, нельзя сразу же нажать OK).

    Ответ

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *