AskParam - диалог запроса параметров командной строки
Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik
jentoso,
Список составляется с помощью указания нескольких команд /t или /u перед каждой командой /p. Если перед запросом очередного параметра режим очистки выключен, список не очищается, что позволяет делать несколько запросов с одинаковыми списками. Пример:
При запросе Param1 варианты будут Debug и Release. При запросе Param2 - тоже они, т.к. команда /pParam1: не очистила список за собой (режим очистки отключён). А при запросе Param3 в списке вариантов уже не будет Debug и Release, т.к. режим очистки включён. Если поиграть с этим, думаю, вполне можно понять. Когда режим очистки включён, список очищается после запроса каждого параметра (как раньше). Когда выключен - значения в списке накапливаются.
Возможно, добавлю какой-нибудь параметр типа /r1 для однократной очистки (типа, указывать всегда перед /p, если надо очистить список).
Список составляется с помощью указания нескольких команд /t или /u перед каждой командой /p. Если перед запросом очередного параметра режим очистки выключен, список не очищается, что позволяет делать несколько запросов с одинаковыми списками. Пример:
Код: Выделить всё
AskParam /r- /tDebug /uRelease /pParam1: /r /pParam2: /tWin32 /tx64 /pParam3:Возможно, добавлю какой-нибудь параметр типа /r1 для однократной очистки (типа, указывать всегда перед /p, если надо очистить список).
MVV, возможно сделать для для параметров /t /u комментарии? Попробую объяснить на примере. Сделал пользовательские комнады
Теперь в выпадающем списке, показывается путь куда распаковать архив, в текущей панели или противоположной:

Хотелось бы иметь возможность, чтобы отображались надписи "В текущей панели", "В противоположной", а под ними подразумевались заданные параметры, но в тоже время, если выбран например параметр "В противоположной", можно было его изменить в ручную.
Код: Выделить всё
[em_WinRAR_UnPack]
button=%commander_path%\Icons\custom.icl,9
cmd=%COMMANDER_PATH%\AskParam.exe
param=/c"Извлечь из архива" /t%T%O\ /u%O\ /p"Путь" %%COMMANDER_PATH%%\Utils\WinRAR\WinRAR.exe X -cfg- -ibck -kb -or -- %N "%%1"
menu=Распаковать WinRAR'ом
Хотелось бы иметь возможность, чтобы отображались надписи "В текущей панели", "В противоположной", а под ними подразумевались заданные параметры, но в тоже время, если выбран например параметр "В противоположной", можно было его изменить в ручную.
TC 11.58 combo, Windows 11 x64
А порядок их следования разве ничего не говорит? Первый - текущая, и т.п. И потом, толку с фразы "В противоположной", если для незначительного изменения пути (скажем, распаковать в поддиректорию 1 или в директорию уровнем чуть выше) придётся его полностью вписывать, убирая бесполезное "В противоположной". Путаницы будет куда больше.
Ничто не запрещает написать батник, который будет вызываться через AskParam, и который будет заменять "В противоположной" на путь, если так хочется.
Ничто не запрещает написать батник, который будет вызываться через AskParam, и который будет заменять "В противоположной" на путь, если так хочется.
Конечно порядок для себя самого понятен, но другие могут не понять.А порядок их следования разве ничего не говорит?
Вместо "В противоположной" пользователь мог бы написать любой коммент. Я имел ввиду /t"X -cfg- -ibck -kb -or -- %N", а пользователь не знает что сделает этот параметр, но к нему будет коммент, например /tc"Распаковка архива в фоновом режиме".толку с фразы "В противоположной"
Хорошо, я просто спросил о данной возможности
TC 11.58 combo, Windows 11 x64
AskParam 1.0.3.86:
+ параметр /r! для прямой очистки выпадающего списка
* горизонтальная прокрутка для выпадающего списка
* длина строки параметров увеличена до 32767 символов
+ параметр /r! для прямой очистки выпадающего списка
* горизонтальная прокрутка для выпадающего списка
* длина строки параметров увеличена до 32767 символов
Ну он как раз для упрощения работы с очисткой списка введён. Приведенный выше пример, но с использованием нового /r!:
Удобство в том, что очистка происходит непосредственно в том месте, где указан /r!, и ровно 1 раз, а не после ближайшего /p (для следующей очистки нужно указывать /r! еще раз). Т.е., запросили параметр, почистили список вручную - и давай заполнять новыми элементами.
Найду время, допишу Readme, параметры будут объясняться подробнее.
Код: Выделить всё
AskParam /r- /tDebug /uRelease /pParam1: /pParam2: /r! /tWin32 /tx64 /pParam3:Найду время, допишу Readme, параметры будут объясняться подробнее.
MVV
Спасибо за программу, но я в ней совсем запутался. Приведи пожалуйста пример для двух параметров. У меня вот такая задача:
то есть надо чтобы сначала вышел диалог для названия SSID, затем диалог на ввод ключа KEY
Спасибо за программу, но я в ней совсем запутался. Приведи пожалуйста пример для двух параметров. У меня вот такая задача:
Код: Выделить всё
netsh wlan set hostednetwork mode=allow ssid="SoftAP" key="88888888" keyUsage=persistentЧто-то вроде:
Каждый ключ /p - это очередной запрос параметра, к первому потом обращение как к %1, ко второму - как к %2 и т.д.
Если запускать из батника или кнопки панели тотала, проценты надо удвоить.
В параметрах /t указывается предлагаемое значение, можно указать там свои (или вообще убрать, чтобы поле ввода было пустым). Можно указывать несколько /t подряд, чтобы был списочек предлагаемых значений (примеры выше).
Код: Выделить всё
AskParam /c"SSID" /t"SoftAP" /p"Введите SSID:" /c"Key" /t"88888888" /p"Введите ключ:" netsh wlan set hostednetwork mode=allow ssid="%1" key="%2" keyUsage=persistentЕсли запускать из батника или кнопки панели тотала, проценты надо удвоить.
В параметрах /t указывается предлагаемое значение, можно указать там свои (или вообще убрать, чтобы поле ввода было пустым). Можно указывать несколько /t подряд, чтобы был списочек предлагаемых значений (примеры выше).
- LonerD
- Сообщения: 1174
- Зарегистрирован: Вт янв 04, 2011 03:56
- Откуда: Макеевка
- Контактная информация:
Цель - отобразить окошко для ввода параметров (одного или нескольких через пробел) вручную.
На примере Nconvert (консольная утилита конвертирования изображений).
Работающий вариант реализации:
Минус этого метода в том, что в появляющемся окошке для ввода параметров перечислены все передаваемые программе файлы.
Этого можно избежать с помощью AskParam.
Сумел дойти только до такого решения:
Но оно оказалось неработающим.
Например ввожу в окне AskParam "-out png" (без кавычек) для пересохранения файла в формате png, а файл просто пересохраняется в исходном формате. Такое впечатление, что передаётся параметр до пробела, а всё что после пробела (-out), а png - отсекается.
А как же правильно тогда записать?
На примере Nconvert (консольная утилита конвертирования изображений).
Работающий вариант реализации:
Код: Выделить всё
[em_Nconvert]
cmd=%commander_path%\Utilities\DreamLair\Nconvert\Nconvert.exe
param=? %P%SЭтого можно избежать с помощью AskParam.
Сумел дойти только до такого решения:
Код: Выделить всё
[em_Nconvert_]
cmd=%commander_path%\Plugins\exe\AskParam.exe
param=/c"Nconvert: Image graphics converter" /p"Enter parameters" /s0 "%%commander_path%%\Utilities\DreamLair\Nconvert\Nconvert.exe" " " "%%1" %P%SНапример ввожу в окне AskParam "-out png" (без кавычек) для пересохранения файла в формате png, а файл просто пересохраняется в исходном формате. Такое впечатление, что передаётся параметр до пробела, а всё что после пробела (-out), а png - отсекается.
А как же правильно тогда записать?
Windows 11 | TC DreamLair eternal pre-α
Не понял, какая цель у параметра-пробела. Он по синтаксису там точно нужен? Какой синтаксис должен быть у nconvert?
Чтобы посмотреть, что именно передается программе, можно, например, сделать так:
Кстати, обычно, если ключ и его параметр разделяются пробелом, они не заключаются в кавычки (т.е. надо просто %%1, а не "%%1").
Если ключ -out есть всегда, и меняется только его параметр, имеет смысл его захардкодить и вводить только тип (можно даже накидать несколько типов в выпадающий список).
Чтобы посмотреть, что именно передается программе, можно, например, сделать так:
Код: Выделить всё
[em_Nconvert_]
cmd=%commander_path%\Plugins\exe\AskParam.exe
param=/c"Nconvert: Image graphics converter" /p"Enter parameters" cmd.exe /k echo "%%commander_path%%\Utilities\DreamLair\Nconvert\Nconvert.exe" " " "%%1" %P%SЕсли ключ -out есть всегда, и меняется только его параметр, имеет смысл его захардкодить и вводить только тип (можно даже накидать несколько типов в выпадающий список).
Код: Выделить всё
... /tpng /tjpg /tgif /p"Enter output type:" ... -out %%1- LonerD
- Сообщения: 1174
- Зарегистрирован: Вт янв 04, 2011 03:56
- Откуда: Макеевка
- Контактная информация:
Чтобы не нужно было вводить этот пробел в окне ввода AskParam. Если нет пробела, то Nconvert.exe и параметр слипались, получается Nconvert.exe-out и вообще ничего не происходит.Не понял, какая цель у параметра-пробела.
Только в предложенном варианте с cmd.exe надо ещё проценты учетверять: %%%%commander_path%%%%Чтобы посмотреть, что именно передается программе, можно, например, сделать так
Спасибо, да, в этом и была проблема. Если убрать кавычки, то и доп.пробел прописывать не нужно. Рабочий вариант:Кстати, обычно, если ключ и его параметр разделяются пробелом, они не заключаются в кавычки (т.е. надо просто %%1, а не "%%1").
Код: Выделить всё
[em_Nconvert_]
cmd=%commander_path%\Plugins\exe\AskParam.exe
param=/c"Nconvert: Image graphics converter" /p"Enter parameters" /s0 "%%commander_path%%\Utilities\DreamLair\Nconvert\Nconvert.exe" %%1 %P%S
Последний раз редактировалось LonerD Сб окт 12, 2013 16:06, всего редактировалось 1 раз.
Windows 11 | TC DreamLair eternal pre-α
AskParam не трогает строку параметров, лишь подставляет текст вместо %%d, пробелы пропадать из-за нее не могут.Если нет пробела, то Nconvert.exe и параметр слипались, получается Nconvert.exe-out и вообще ничего не происходит.
Во, другое дело.Если убрать кавычки, то и доп.пробел прописывать не нужно.
Но вообще странно, что пустой параметр мог как-то помочь в этом. Серия пробелов не в кавычках - это разделитель между параметрами, а пробел внутри кавычек - это часть этого параметра, соответственно, этот пробел программа обрабатывает не как разделитель, а как параметр.