Методы взаимодействия с пользователем

Тема в разделе "Пакетные файлы CMD, BAT", создана пользователем Kиpилл, 24 ноя 2013.

  1. Kиpилл
    Оффлайн

    Kиpилл Команда форума Администратор

    Лучший автор месяца

    Сообщения:
    12.199
    Симпатии:
    4.970
    Вариантов много,поэтому создам эту тему и все свои почему касаемо этого вопроса буду тут задавать...

    На данный момент меня интересовал вывод сообщения с подтверждением выбора.
    CHOICE тут не годится,поэтому пришел к комбинации vbs-msg.
    Все хорошо,но например в такой конструкции появился нежданчик в виде кодировки:
    Код (Text):
    set m.msg=^
      Версия системы определена верно? ^&^                                  
      cmd /U /C echo Wscript.Echo Msgbox^(replace^(Wscript.Arguments^(0^),"&",vbLF^),68,"Подтверждение выбора"^)>"msgbox.vbs"
      for /f %%a in ('cscript "msgbox.vbs" "%m.msg%"^& del "msgbox.vbs"') do set err=%%a
      if "%err%"=="6"  goto redirect
      if "%err%"=="7" ( chcp 1251>nul
                        (Echo Вам необходимо выбрать файл самостоятельно,соответствующий версии Вашей операционной системы.^
                          Перейдите по ссылке в браузере и скачайте нужный твик,либо обратитесь за помощью на форум SafeZone.cc|msg * /v /w)
                          start http://safezone.cc/threads/vosstanovlenie-znachenij-zapuska-sistemnyx-sluzhb-po-umolchaniju.21154/
                            ping -n 10 127.0.0.1 > NUL)
    Суть в том что msg воспринимает только кодировку 1251,в таком случае получаю возврат кракозябров в консоль...
    Какие советы будут?
     
    Последнее редактирование: 24 ноя 2013
    akok нравится это.
  2. Kиpилл
    Оффлайн

    Kиpилл Команда форума Администратор

    Лучший автор месяца

    Сообщения:
    12.199
    Симпатии:
    4.970
    Поработал над вариантами-для более сложных и многоуровневых диалогов больше годится другая конструкция и ЯП.
    upload_2013-11-24_20-57-5.png
    Код (Text):
    <html>
      <head>
        <title>Восстановления запуска системных служб по умолчанию</title>
          <hta:application
          borderStyle="complex"
          windowState=" minimize"
          applicationName="HTAPOSTCARD"
          innerBorder="yes"
          selection="yes"
          scroll="no"
          caption="yes"
          maximizebutton="yes"
          minimizebutton="yes"
          contextmenu="yes" />
        <style type="text/css">
        </style>
      </head>
      <BODY BACKGROUND="images/logo_sz.png"
      BGCOLOR="Aqua"
      TEXT="Yellow"
      LINK="#FF0000"
      VLINK="#505050"
      MARGINHEIGHT="30"
      TOPMARGIN="30"
      LEFTMARGIN="40"
      MARGINWIDTH="40">

      <H1 ALIGN="center">Выберите в меню версию Вашей операционной системы,а так же соответствую разрядность</H1>
      <script language="***t">
    .............
    тут кидаем блок на любом ЯП
    .................

    <p>Параметры выбраны?</p>
    <input type="button" value="Установить запуск системных служб по умолчанию" name="run_button"  onClick="*****">
    </body>


      </body>
    </html>
     
    Последнее редактирование: 24 ноя 2013
  3. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.476
    Симпатии:
    4.305
    Koza Nozdri, для более, чем 1 строки тут уж проще написать функцию-обертку с перекодировщиком.
    Я пока не буду этим заниматься. Может, FraidZZ-у будет интересно, спрошу.

    На счет HTA - согласен. Давай понемногу перебираться на визуальный интерфейс.
     
  4. FraidZZ
    Оффлайн

    FraidZZ Новый пользователь

    Сообщения:
    16
    Симпатии:
    18
    Я пока в прострации - выдолбался за день :sleep:
     
  5. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.476
    Симпатии:
    4.305
    Да, сегодня интересные штучки показывал. Правда, я так и не нашел где применить CrLf.

    Koza Nozdri, вот такая функция у меня получилась:
    Код (DOS):
    @echo off
    SetLocal EnableExtensions
    call :msg "Строка № 1 \nСтрока № 2"
    pause
    Exit /B

    :msg
      chcp 866 >NUL& for /F "delims=" %%a in ("%~1") do chcp 1251 >NUL& call :convert "%%~a"& chcp 866 >NUL& Exit /B
    :convert
      set "text=%~1"
      (@for %%a in ("%text:\n=" "%") do @echo.%%~a) | msg *
    Exit /B
    Единственное ограничение - не передавай в функцию кавычки.
     
    Последнее редактирование: 25 ноя 2013
    Phoenix и Kиpилл нравится это.

Поделиться этой страницей