AskParam - диалог запроса параметров командной строки

Обсуждение только плагинов и утилит для Total Commander.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Дык у тебя же /q"^" всё портит. :D
Сначала ^ у тебя заменяются на ", а потом, естественно, "n не заменяются на разрывы строк. Если тебе /q не нужен, лучше вообще его не указывать. Приоритеты менять местами смысла не вижу (кавычки по-моему важнее), лучше поменять символ кавычки в окне справки на `.
Аватара пользователя
gora
Сообщения: 442
Зарегистрирован: Чт дек 30, 2004 13:09
Откуда: Иваново

Сообщение gora »

MVV писал(а):Дык у тебя же /q"^" всё портит.
Но в 134 не портит!
Ладно, потестить я потестил, "прокукарекал, а там хоть не рассветай".
Меня и 134 устраивает. :)
Win7 SP1 Ultimate x64, TC8.52a x64
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Но в 134 не портит!
Дык там же было \n, а в /q у тебя крышка, символы разные, потому и не портит.
Аватара пользователя
gora
Сообщения: 442
Зарегистрирован: Чт дек 30, 2004 13:09
Откуда: Иваново

Сообщение gora »

MVV писал(а):Дык там же было \n
Я все понял...
Но принцип обратной совместимости "не позволяет" делать в новой версии такие изменения, которые приводят к неработоспособности скрипта\программы вполне себе нормально работающего с предыдущей версией утилиты.
В любом случае о таких изменениях (если они были жизненно необходимы) нужно жирно писать в самом начале анонса новой версии.
ИМХО
Win7 SP1 Ultimate x64, TC8.52a x64
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Изначально то была бета-версия, и в релизе ни слова не было сказано об этой функции. Но то, что я забыл об этом изменении, как и о функции вообще, меня самого не очень радует.
Аватара пользователя
yozhik
Сообщения: 353
Зарегистрирован: Вс май 04, 2014 20:34
Откуда: Электросталь

Сообщение yozhik »

Справка по параметрам в первом посте старовата, много чего добавилось с тех пор (причём, имхо, существенного). Я сделал себе памятку по текущей версии. Труд ни на что не претендует, но, поскольку выполнен, пусть криво-косо, то может пригодиться кому-либо, пока не появится что-либо посерьёзней.
[cut="Памятка по параметрам AskParam 1.0.6.146"]
AskParam
Текущая версия: 1.0.6.146 beta

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

Переменные окружения раскрываются: перед отображением предлагаемого текста, в пути к запускаемой программе, в строке параметров, передаваемых этой программе, а также в заголовке окна и подсказках.

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

ФОРМИРОВАНИЕ ДИАЛОГА:
/c"Title" - заголовок окна (по умолчанию AskParam)
/c(1) - надпись на первой кнопке (по умолчанию OK)
/c(2) - надпись на второй кнопке (по умолчанию Cancel)
/t"String" - указание строк для выпадающего списка значений (может быть несколько)
/u"Selected" - то же, что и /t, только эта строка будет отображена (выделена) при открытии страницы диалога (может быть только одна)
/p"Prompt:" - надпись над выпадающим списком (т.н. «текст приглашения»). Может быть многострочным (см. параметры ^n и /v[n1][:n2]). Обозначает окончание описания каждой секции (страницы) диалога, т.е. параметры /c /t /u, относящиеся к данной секции, должны предшествовать параметру /p.
/p(h) - указывает, что текст от левого края до двоеточия в строке /t или /u будет рассматриваться как комментарий. Например, /t"Первый параметр: -val1" - в командную строку передаётся только -val1, остальное отсекается как комментарий.
/p(e) - указывает, что текст от левого края до двоеточия в строке /p будет рассматриваться как имя переменной, в которую будет помещено выбранное значение из строк /t или /u. Например, /t"-val1" /p(e)"var1: Выберите значение:" - значение -val1 будет помещено в переменную var1. По умолчанию все выбранные значения помещаются в переменные AskParam1, AskParam2 и т.д. по номеру секции (страницы) диалога.
/p(he) - параметры в /p можно комбинировать.

ОПЦИИ:
/a[-] - включает/выключает режим «Поверх всех окон» (по умолчанию выключен)
/e[-] - включает/выключает раскрытие переменных в строке ввода (по умолчанию включено)
/r[-] - включает/выключает очистку выпадающего списка после ввода очередного параметра (по умолчанию включена)
/r! - сброс выпадающего списка
/rd - стиль выпадающего списка: редактируемый (по умолчанию)
/rl - стиль выпадающего списка: нередактируемый
/h[-] - включает/выключает режим ввода пароля (звездочки). Пароль прописывается в строке /t. По умолчанию выключен.
/q"^" - задает символ, который будет заменён на двойную кавычку внутри строк /c, /t и /p.
/s{0-8} - задает режим запуска процесса (0 - скрытый, 1 - нормальный, 2 - свернутый, 3 - развернутый и т.д.)
/w - включает ожидание завершения процесса выполнения командной строки
/v[n1][:n2] - устанавливает ширину/высоту окна. n1 - ширина, n2 - высота. По умолчанию: ширина - 436, высота - 137 (на Windows 8.1). Минимальная ширина - 256.

МАКРОС:
^n - устанавливает перевод строки (Внимание! проверять на совместимость с символом, указанным в ключе /q)

Если в значениях параметров нет пробелов, то кавычки можно опускать. Например, /cTitle.

Параметры /c, /t, /u, /p, /r, /h, /q можно использовать любое число раз для запроса любого числа параметров. После параметров указывается строка для выполнения, в которой можно использовать переменные %1, %2 и т.д. для вставки текста, введенного пользователем в ответ на запрос соответствующего параметра. Максимальное число цифр номера параметра - 3. Если сразу после параметра нужно указать цифру, которую нужно передать запускаемому приложению, номер параметра нужно указывать трехзначным, добавив нулей слева, т.е. %001 вместо %1 (таким образом, если указать %0012, это будет означать вставку текста первого запрошенного параметра и цифры 2). Также можно использовать системные переменные окружения. Для вставки символа % нужно удвоить его.

При создании кнопок для панели инструментов TC необходимо учитывать: 1) для вставки в строку параметров символа % нужно его удвоить; 2) для передачи символа % запускаемому приложению нужно написать его 4 раза (TC передаст половину символов %, а потом AskParam еще в 2 раза сократит их число при анализе строки).

Пример использования (кнопка для выключения компьютера через заданный интервал времени):
Команда: AskParam.exe
Параметры: /c"Выключение компьютера по таймеру" /t"Через 10 минут: 600" /u"Через час: 3600" /t"Через 2 часа: 7200" /c(1)"Быть" /c(2)"Не быть" /p(h)"Выключить компьютер через:" shutdown -s -t %%1

История изменений:
2015-07-08 1.0.6.146
* макрос перевода строки \n заменён на ^n (циркумфлекс + латинская n) из соображений совместимости

2015-07-02 1.0.6.144
+ /p(e)"var: text" - задаёт имя переменной, в которую помещается выбранное значение; работает по аналогии с /p(h)
+ /p(he) - параметры в /p можно комбинировать. Например: AskParam /t"Моя любимая опция: Option1" /p(he)"my_opt: any Option" ...

2015-01-03 1.0.6.134
+ ширину окна можно задать меньше начальной с помощью /v, но не менее 256
+ изменяемая высота окна. Указывается в параметре /v после двоеочия (/vширина:высота). Высота ограничена двойным размером.
+ \n в строке приглашения заменяется на перевод строки
+ улучшено отображение иконки (теперь загружается явно из user32.dll)
+ ключ /e- отключает раскрытие переменных при отображении в поле ввода. На выходе переменные всё равно раскрываются.

2014-12-21 1.0.6.124
+ каждый параметр создаёт переменную вида AskParam1, AskParam2 и т.д., куда помещаются выбранные значения

2014-12-01 1.0.6.120
+ ключ /a управляет режимом поверх всех окон
* не все элементы окна изменяли размер

2014-05-03 1.0.6.112
+ добавлена 64-битная версия
+ изменяемая ширина окна
+ начальная ширина окна задается ключом /v

2013-11-11 1.0.4.98
+ подопция (h) для параметра /p позволяет указывать подсказки к вариантам ответа
+ параметры /rd, /rl для переключения между редактируемым и нередактируемым списком (содержимое не переносится)
+ подопции (1) и (2) для параметра /c для изменения текста кнопок
* слегка увеличена ширина окна

2013-03-08 1.0.3.86
+ параметр /r! для прямой очистки выпадающего списка
* горизонтальная прокрутка для выпадающего списка
* длина строки параметров увеличена до 32767 символов

2013-02-18 1.0.3.80
+ параметр /s{0-8} для запуска в свернутом, развернутом или скрытом виде
+ поле ввода заменено выпадающим списком
+ можно задавать несколько строк списка с помощью нескольких параметров /t
+ параметр /u работает как /t, но делает свою строку текущей
+ параметр /r- отключает очистку выпадающего списка после ввода каждого параметра

2012-04-12 1.0.2.61
+ параметр /h[-] для режима ввода паролей

2011-07-14 1.0.1.50
+ параметр /w для ожидания завершения процесса

2010-04-02 1.0.0.44
+ полная поддержка переменных окружения (например, %COMMANDER_PATH%)

2010-03-30 1.0.0.30
+ Юникод-версия
[/cut]
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Благодарность за труд! Пригодится при написании Readme, а пока добавил ссылку в первый пост.
HA3APET
Сообщения: 151
Зарегистрирован: Пн фев 22, 2010 05:43

Сообщение HA3APET »

MVV
А можно пример для
net use Z: https://webdav.ru <password> /user:<login> /persistent:yes

то есть, чтобы можно было ввести:
Букву
Адрес
Логин
Пароль
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Можно, но в нём нет абсолютно ничего выдающегося:

Код: Выделить всё

AskParam.exe /tZ /p"Буква:" /t"https://webdav.ru" /p"Адрес:" /p"Логин:" /h /p"Пароль:" net use %1: "%2" "%4" /user:%3 /persistent:yes
При желании можно и для /persistent добавить комбобокс с выбором. Это можно сделать несколькими способами, выбрал более интересный:

Код: Выделить всё

AskParam.exe /tZ /p"Буква:" /t"https://webdav.ru" /p"Адрес:" /p"Логин:" /h /p"Пароль:" /rl /t"Да: /persistent:yes" /t"Нет: /persistent:no" /p(h)"Постоянное подключение?" net use %1: "%2" "%4" /user:%3 %5
Если это будет с кнопки в тотале, то либо всю строку надо загнать в поле команды, либо удвоить символы % в той её части, что будет вынесена в поле параметров.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

[s]Только весь список дисков как в cm_NetConnect не добавить (максимум - 10):[/s]

Код: Выделить всё

/c"                         Подключение сетевого диска" /rl /tZ: /tY: /tX: /tY: /tW: /tV: /tU: /tT: /tS: /tR: /tQ: /tP: /tO: /tN: /tM: /tL: /tK: /tJ: /tI: /tH: /tG: /tF: /tE: /tD: /pДиск: /rd /thttps://webdav.ru /pURL-адрес: /pЛогин: /h /pПароль: net use %1 %2 %4 /user:%3 /persistent:yes
Последний раз редактировалось Flasher Вт янв 05, 2016 13:21, всего редактировалось 3 раза.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Добавить все можно разве что перечислением. Или из скрипта/батника, тогда можно добавлять только свободные буквы.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Но даже свободных окажется, увы, больше.
А что даст перечисление? Как с ним работать?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Дык ничего не мешает добавить в перечисление все буквы (кстати, чтобы сократить запись, можно перечислять буквы без кавычек: /tZ: /tY: и т.п.). А что даст...
Перечисление в режиме списка не даст выбрать занятую букву, при этом выбирать можно будет стрелками вверх/вниз и алфавитными клавишами. Перечисление в обычном режиме - просто подсказка о доступных буквах и возможность выбора стрелками в любой раскладке или ввести любую букву вручную.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Тьфу ты, я на ползунок-то не смотрю. Поправил.
MVV писал(а):Перечисление в режиме списка не даст выбрать занятую букву
Каким образом? Я только так смог:

Код: Выделить всё

'=============== Путь к AskParam ===============
AskParam = "%COMMANDER_PATH%\Utils\AskParam.exe"
'===============================================
S = " /tZ: /tY: /tX: /tY: /tW: /tV: /tU: /tT: /tS: /tR: /tQ: " & _
"/tP: /tO: /tN: /tM: /tL: /tK: /tJ: /tI: /tH: /tG: /tF: /tE: /tD:"
For Each D in CreateObject("Scripting.FileSystemObject").Drives
  S = Replace(S, " /t" & D, "")
Next : CreateObject("WScript.Shell").Exec AskParam & " /v290 /s0 /c"" " &_
"Подключить сетевой диск"" /c(1)Принять /c(2)Отменить /rl" & S & " /pДиск: /rd /thttps:"&_
"//webdav.ru /pURL-адрес: /pЛогин: /h /pПароль: net use %1 %2 %4 /user:%3 /persistent:yes"
И что-то я про режимы не понял. И там и там можно выбирать стрелками? Напиши примеры лучше.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Каким образом? Я только так смог:
Ну вроде мысль верна, я и подразумевал то, что ты можешь заранее зафиксировать набор, из которого можно сделать выбор, и запретить ввод иного значения. А каким алгоритмом формировать комстроку - уже дело десятое.
И что-то я про режимы не понял. И там и там можно выбирать стрелками? Напиши примеры лучше.
В стандартном комбобоксе можно стрелками перебирать значения выпадающего списка без его открытия (как в тоталовском диалоге по F7, например) независимо от режима (фиксированный список/редактируемый список). Собственно, независимо от того, поставишь ты /rl или /rd перед /pДиск:, ты сможешь набитые с помощью /t значения перебирать стрелками. А в случае /rl ещё сможешь, например, нажатием клавиши Y выбрать строку Y:.
Ответить