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

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

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

Аватара пользователя
jentoso
Сообщения: 443
Зарегистрирован: Чт дек 20, 2007 01:36

Сообщение jentoso »

MVV, то есть /r работает с уже составленным заранее списком?
TC 11.58 combo, Windows 11 x64
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

jentoso,
Список составляется с помощью указания нескольких команд /t или /u перед каждой командой /p. Если перед запросом очередного параметра режим очистки выключен, список не очищается, что позволяет делать несколько запросов с одинаковыми списками. Пример:

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

AskParam /r- /tDebug /uRelease /pParam1: /r /pParam2: /tWin32 /tx64 /pParam3:
При запросе Param1 варианты будут Debug и Release. При запросе Param2 - тоже они, т.к. команда /pParam1: не очистила список за собой (режим очистки отключён). А при запросе Param3 в списке вариантов уже не будет Debug и Release, т.к. режим очистки включён. Если поиграть с этим, думаю, вполне можно понять. Когда режим очистки включён, список очищается после запроса каждого параметра (как раньше). Когда выключен - значения в списке накапливаются.

Возможно, добавлю какой-нибудь параметр типа /r1 для однократной очистки (типа, указывать всегда перед /p, если надо очистить список).
Аватара пользователя
jentoso
Сообщения: 443
Зарегистрирован: Чт дек 20, 2007 01:36

Сообщение jentoso »

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

Сообщение MVV »

А порядок их следования разве ничего не говорит? Первый - текущая, и т.п. И потом, толку с фразы "В противоположной", если для незначительного изменения пути (скажем, распаковать в поддиректорию 1 или в директорию уровнем чуть выше) придётся его полностью вписывать, убирая бесполезное "В противоположной". Путаницы будет куда больше.

Ничто не запрещает написать батник, который будет вызываться через AskParam, и который будет заменять "В противоположной" на путь, если так хочется.
Аватара пользователя
jentoso
Сообщения: 443
Зарегистрирован: Чт дек 20, 2007 01:36

Сообщение jentoso »

А порядок их следования разве ничего не говорит?
Конечно порядок для себя самого понятен, но другие могут не понять.
толку с фразы "В противоположной"
Вместо "В противоположной" пользователь мог бы написать любой коммент. Я имел ввиду /t"X -cfg- -ibck -kb -or -- %N", а пользователь не знает что сделает этот параметр, но к нему будет коммент, например /tc"Распаковка архива в фоновом режиме".
Хорошо, я просто спросил о данной возможности
TC 11.58 combo, Windows 11 x64
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Можно же батник вызвать, который будет проверять, содержит ли этот параметр строку "Распаковка архива в фоновом режиме", и подставлять сложный набор параметров. Тем более, можно запускать батник в скрытом виде, чтобы не было черного окна.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

AskParam 1.0.3.86:
+ параметр /r! для прямой очистки выпадающего списка
* горизонтальная прокрутка для выпадающего списка
* длина строки параметров увеличена до 32767 символов
Аватара пользователя
jentoso
Сообщения: 443
Зарегистрирован: Чт дек 20, 2007 01:36

Сообщение jentoso »

MVV, не первый раз приходится уточнять о новых введения. Вот и на сей раз параметр /r! не совсем понятен.
TC 11.58 combo, Windows 11 x64
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Ну он как раз для упрощения работы с очисткой списка введён. Приведенный выше пример, но с использованием нового /r!:

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

AskParam /r- /tDebug /uRelease /pParam1: /pParam2: /r! /tWin32 /tx64 /pParam3:
Удобство в том, что очистка происходит непосредственно в том месте, где указан /r!, и ровно 1 раз, а не после ближайшего /p (для следующей очистки нужно указывать /r! еще раз). Т.е., запросили параметр, почистили список вручную - и давай заполнять новыми элементами.

Найду время, допишу Readme, параметры будут объясняться подробнее.
HA3APET
Сообщения: 151
Зарегистрирован: Пн фев 22, 2010 05:43

Сообщение HA3APET »

MVV
Спасибо за программу, но я в ней совсем запутался. Приведи пожалуйста пример для двух параметров. У меня вот такая задача:

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

netsh wlan set hostednetwork mode=allow ssid="SoftAP" key="88888888" keyUsage=persistent
то есть надо чтобы сначала вышел диалог для названия SSID, затем диалог на ввод ключа KEY
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Что-то вроде:

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

AskParam /c"SSID" /t"SoftAP" /p"Введите SSID:" /c"Key" /t"88888888" /p"Введите ключ:" netsh wlan set hostednetwork mode=allow ssid="%1" key="%2" keyUsage=persistent
Каждый ключ /p - это очередной запрос параметра, к первому потом обращение как к %1, ко второму - как к %2 и т.д.
Если запускать из батника или кнопки панели тотала, проценты надо удвоить.
В параметрах /t указывается предлагаемое значение, можно указать там свои (или вообще убрать, чтобы поле ввода было пустым). Можно указывать несколько /t подряд, чтобы был списочек предлагаемых значений (примеры выше).
Аватара пользователя
LonerD
Сообщения: 1174
Зарегистрирован: Вт янв 04, 2011 03:56
Откуда: Макеевка
Контактная информация:

Сообщение LonerD »

Цель - отобразить окошко для ввода параметров (одного или нескольких через пробел) вручную.
На примере 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-α
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Не понял, какая цель у параметра-пробела. Он по синтаксису там точно нужен? Какой синтаксис должен быть у nconvert?

Чтобы посмотреть, что именно передается программе, можно, например, сделать так:

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

[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
Кстати, обычно, если ключ и его параметр разделяются пробелом, они не заключаются в кавычки (т.е. надо просто %%1, а не "%%1").

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

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

... /tpng /tjpg /tgif /p"Enter output type:" ... -out %%1
Аватара пользователя
LonerD
Сообщения: 1174
Зарегистрирован: Вт янв 04, 2011 03:56
Откуда: Макеевка
Контактная информация:

Сообщение LonerD »

Не понял, какая цель у параметра-пробела.
Чтобы не нужно было вводить этот пробел в окне ввода 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-α
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Если нет пробела, то Nconvert.exe и параметр слипались, получается Nconvert.exe-out и вообще ничего не происходит.
AskParam не трогает строку параметров, лишь подставляет текст вместо %%d, пробелы пропадать из-за нее не могут.
Если убрать кавычки, то и доп.пробел прописывать не нужно.
Во, другое дело. :)
Но вообще странно, что пустой параметр мог как-то помочь в этом. Серия пробелов не в кавычках - это разделитель между параметрами, а пробел внутри кавычек - это часть этого параметра, соответственно, этот пробел программа обрабатывает не как разделитель, а как параметр.
Ответить