AskParam - диалог запроса параметров командной строки
Select messages from
# through # FAQ
[/[Print]\]

Total Commander -> Плагины Total Commander

#1: AskParam - диалог запроса параметров командной строки Author: MVVLocation: Ростов-Дон PostPosted: Sat Aug 21, 2010 22:10
    —
Утилита писалась сравнительно давно, упоминалась неоднократно на страницах форума, но темы для нее не было.

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

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



Информация о последней версии

Версия: 1.0.6
URL: AskParam на wincmd.ru / AskParam на totalcmd.net

Требования: Windows 2000 и выше

Особенности:

+ любое число вводимых параметров и их указание в параметрах запуска программы
+ возможность менять заголовок окна, сообщение о вводе параметра и набор строк выпадающего списка
+ раскрытие переменных окружения в отображаемых строках диалога и параметрах запуска программы
+ полная поддержка Юникода


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

/c"Привет" - устанавливает заданный заголовок окна
/t"Вариант ответа", /u"Выделенный вариант" - добавляют строки в выпадающий список (можно несколько раз указывать), /u также выделяет свой вариант
/p"Введите параметр:" - устанавливает текст приглашения, а также отображает диалог для запроса параметра (при этом предлагаемые значения, заголовок окна и прочие опции должны быть установлены заранее)
/r[-] - включает/выключает очистку выпадающего списка после ввода очередного параметра
/h[-] - включает/выключает режим ввода пароля (звездочки)
/q"^" - задает символ, который будет заменен на двойную кавычку внутри строк параметров /c, /t и /p
/s{0-8} - задает режим запуска процесса (0 - скрытый, 1 - нормальный, 2 - свернутый, 3 - развернутый)
/w - включает опцию ожидания завершения процесса

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

При запуске с панели инструментов ТК нужно помнить, что для вставки в строку параметров символа % нужно удвоить его. А если этот символ % нужно передать запускаемому приложению, то нужно написать его 4 раза (тотал передаст половину символов %, а потом AskPAram еще в 2 раза сократит их число при анализе строки).


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


Это описание параметров может быть полезным
Этот краткий перечень вариантов применения может быть интересным


Last edited by MVV on Tue May 17, 2016 12:17; edited 11 times in total

#2:  Author: MVVLocation: Ростов-Дон PostPosted: Sat Aug 21, 2010 22:19
    —
GGS wrote:
Вопрос по переменным окружения.
Для теста использую команду: AskParam /c /t"%TIME%" /p cd.

Если команда выполняется из консоли (cmd /c), то подсказка %TIME% раскрывается в своё значение.
Если из ком.строки ТС или из ТС-кнопки, то просто вижу %TIME% как текст.
Речь только об отображении в окне ввода, в качестве параметра %1 передаётся правильно. Аналогично с %DATE%.
Переменные %COMMANDER_PATH%, %TEMP% и пр. раскрываются в качестве подсказки в своё значение, а эти - нет.

Можно исправить положение?

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

Но ты можешь запускать CMD, а из него AskParam. То есть, в данном случае потребуется лишь приписать строку cmd.exe /c перед путем к AskParam.exe: cmd.exe /c AskParam.exe /c /t"%TIME%" /p cd.
Единственный минус такого способа вызова - черное окно в фоне. Однако, если поставить галочку запуска программы в свернутом виде, оно будет запускаться в виде кнопки панели задач. Также можно создать ярлык для CMD.exe, в свойствах которого прописать запуск в свернутом виде и параметр /c - и запускать AskParam просто как параметр этого ярлыка. Тогда мы получим возможность задать значок и название кнопки на панели задачSmile
Кстати, еще минус такого способа - то, что CMD.exe иногда криво обрабатывает параметры, если имя программы для запуска заключено в кавычки (там целая система, благодаря которой CMD.exe работает намного тупее, чем если бы ее вообще не было).

#3:  Author: GGS PostPosted: Sun Aug 22, 2010 01:06
    —
MVV wrote:
CMD.exe работает намного тупее, чем если бы ее вообще не было

Да, намучился я с кавычками. Всё получилось, спасибо. Тестовая кнопка такая:
Code:
TOTALCMD#BAR#DATA
cmd /c start "" "%COMMANDER_PATH%\TOOLs\AskParam.exe"
/c"Заголовок" /t"%%TIME:~0,5%%" /p"Время:" cmd /k echo %%1
%COMMANDER_PATH%\TotalCmd.exe,3
AskParam TEST

1
-1


Last edited by GGS on Sun Aug 22, 2010 01:54; edited 1 time in total

#4:  Author: Serge Yolkin PostPosted: Sun Aug 22, 2010 01:27
    —
Code:
cmd=cmd /v /c
param= (Echo Время: !TIME!)&(Echo Дата:  !DATE!)&(Set /p #= %N )&(If Not Defined # Set #= )&(%P%N !#!)

Исправлено
Дополнено


Last edited by Serge Yolkin on Sun Aug 22, 2010 02:54; edited 2 times in total

#5:  Author: GGS PostPosted: Sun Aug 22, 2010 02:00
    —
Serge Yolkin
Задача была видеть текущее значение (в данном примере время) с возможностью его корректировки и отправки в качестве параметра дальше. Редактировать поле ввода AskParam гораздо удобнее, чем в консоли.

#6:  Author: Serge Yolkin PostPosted: Sun Aug 22, 2010 02:42
    —
GGS
Зато дату/время передает...

#7:  Author: Infocatcher PostPosted: Sun Aug 29, 2010 00:33
    —
А можно наследовать системную тему оформления?
Было бы совсем замечательно. Smile

#8:  Author: MVVLocation: Ростов-Дон PostPosted: Sun Aug 29, 2010 02:15
    —
Наверн можно добавить файл манифеста, чтобы это заработало (попробовать создать по аналогии с другой программой). Я никогда не использую тем кроме классической, поэтому разницы нигде не вижу.

Декодируй, распакуй и положи AskParam.exe.manifest рядом с AskParam.exe:
Code:
MIME-Version: 1.0
Content-Type: application/octet-stream; name="AskParam.exe.manifest.7z"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="AskParam.exe.manifest.7z"

N3q8ryccAANeCYjFYAEAAAAAAABsAAAAAAAAAC8xtCkAHg/LhxHYzmaRD4Meyv17M9R/6bfaKDF2
JWYgTSoJbWr3KXA4QROVCIrQWx2TS+JShoUL9yq/xlgAFfVxB7m0LUKcUW+08Q3hbDV4eBstqWdT
OM/07c5ispOErlyzdE9T6EpPkxGG3WXErXanWcge0LIcd9TKSlb/UitpLVk8knC9m4Poq1+vL5RA
8kjlxvLXYw0xqrVnzWJvgU4hR8PzSUn42BNRaXCp+0sB1fRTOidFiD5t681N8jTDSNYBishdWbLi
FbTfNZy/RKf96FyEvVfG2RWu12huSbhJ3X6yUrhu3NkYFRrgxU0H0HkT5zl9uQ0Q1JLMwFFlGwK1
SFIm35nNOSfKrVxV+/n1Goc23Eu0B8KRkNy+V1Elf+8WOcNtit7er3baSgpkcyMAJHnxHZj0+FWV
PfHqc0MBR+t09AHR6rJ93hM3uhxZ/eBnFsj+9BT15E3uT7Jv7VFk0xkAAQQGAAEJgWAABwsBAAEj
AwEBBV0AAAEADIJOAAgKAaB40NUAAAUBES0AQQBzAGsAUABhAHIAYQBtAC4AZQB4AGUALgBtAGEA
bgBpAGYAZQBzAHQAAAAUCgEAEv3jDABHywEVBgEAIAgAAAAA


#9:  Author: Infocatcher PostPosted: Sun Aug 29, 2010 02:49
    —
Не помогло.
Или с AskParam.exe.manifest что-то не так, или все-таки одного его в данном случае недостаточно.

#10:  Author: GGS PostPosted: Sun Aug 29, 2010 08:48
    —
Infocatcher
У меня сработало, см. на кнопки
MVV, очередное спасибо.

#11:  Author: MVVLocation: Ростов-Дон PostPosted: Sun Aug 29, 2010 11:00
    —
У меня тоже вид элементов окна изменился, как справочного сообщения, так и диалога ввода - пришлось включить службу поддержки тем для проверки.

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

#12:  Author: GGS PostPosted: Sun Aug 29, 2010 11:10
    —
MVV
А может ну её, эту корпорацию, и интегрировать manifest в ресурсы. Я попробовал, всё OK.

P.S. Кстати, TotalCmd.exe имеет manifest в ресурсах, но, несмотря на это, и в виде отдельного файла. Зачем такое дублирование?


Last edited by GGS on Sun Aug 29, 2010 13:18; edited 1 time in total

#13:  Author: MVVLocation: Ростов-Дон PostPosted: Sun Aug 29, 2010 12:11
    —
Можно и в ресурсы, эффект одинаков. Но я не понимаю, зачем такую хрень встраивать в ресурсы.

Кстати, да, у тотала манифест и в ресурсах. Значит, файл можно безболезненно убить.

#14:  Author: GGS PostPosted: Sun Aug 29, 2010 12:49
    —
MVV wrote:
Но я не понимаю, зачем такую хрень встраивать в ресурсы.
Отдельным файлом может "потеряться". Размер на 1кБ увеличивается, но всё равно за пределы одного кластера программа вышла.

#15:  Author: CaptainFlintLocation: Москва PostPosted: Sun Aug 29, 2010 13:44
    —
GGS wrote:
P.S. Кстати, TotalCmd.exe имеет manifest в ресурсах, но, несмотря на это, и в виде отдельного файла. Зачем такое дублирование?

Из истории:
Quote:
21.06.06 Добавлено: Файл totalcmd.exe.manifest, поскольку Totalcmd в некоторых случаях не использовал стиль XP (внутренний manifest-ресурс игнорировался).

#16:  Author: Infocatcher PostPosted: Sun Aug 29, 2010 17:27
    —
GGS wrote:
Infocatcher
У меня сработало, см. на кнопки

Вот же ж.
На виртуалке с Win XP работает. А на Win 7 – ни в какую.
*лучи ненависти в сторону небезызвестной корпорации*

[Upd]
Добавил в ресурсы – заработало и на Win 7.

#17:  Author: wOxxOm PostPosted: Mon Mar 12, 2012 22:16
    —
Замечательная программа! Только хотелось бы чтобы она не съедала % в %%a - %%z и их деривативах типа %%~na и проч. а то приходится в тотале писать %%%%a.

И пожалуйста, подскажите, как сделать так, чтобы временный файллист (%F, %L и тд) из тотала не стирался до запуска дочернего процесса из askParam?

#18:  Author: MVVLocation: Ростов-Дон PostPosted: Mon Mar 12, 2012 23:39
    —
wOxxOm wrote:
Замечательная программа! Только хотелось бы чтобы она не съедала % в %%a - %%z и их деривативах типа %%~na и проч. а то приходится в тотале писать %%%%a.

Это стандартное поведение: если программа обрабатывает %-параметры, то для написания знака % надо написать его дважды. Да, это неудобно, т.к. и тотал съедает половину, и AskParam, но иначе никуда - ведь как иначе понять, что такое %1 - это символ процента и цифра 1 или это первый параметр.

wOxxOm wrote:
И пожалуйста, подскажите, как сделать так, чтобы временный файллист (%F, %L и тд) из тотала не стирался до запуска дочернего процесса из askParam?

Для этого есть параметр /w. Укажи его, например, перед остальными параметрами, и AskParam не будет закрываться, пока запускаемая программа работает - и тотал не будет удалять файлы-списки.

#19:  Author: jentoso PostPosted: Wed Oct 03, 2012 17:10
    —
Можно как то передавать параметры утилите TCMC? Например чтобы отображались только те файлы, расширение которых буду введены через askparam.

#20:  Author: MVVLocation: Ростов-Дон PostPosted: Wed Oct 03, 2012 17:23
    —
Ну а почему нельзя? Всё можно. Запрашиваешь ввода и подставляешь %1 (или %%1, или %%%%1, в зависимости от того, где команда будет прописана) в нужном месте командной строки TCMC.

#21:  Author: jentoso PostPosted: Wed Oct 03, 2012 17:49
    —
MVV, например в этой комманде tcmc.exe CM527 CM2023 CM524, куда надо подставлять?

#22:  Author: MVVLocation: Ростов-Дон PostPosted: Wed Oct 03, 2012 18:00
    —
Насколько я помню, в TCMC для смены каталога используется команда CD, поэтому в этой командной строке маску подставлять некуда, в ней нет ни одной команды CD.

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

#23:  Author: jentoso PostPosted: Wed Oct 03, 2012 18:56
    —
MVV, вот пытаюсь создать такую кнопку
Code:
TOTALCMD#BAR#DATA
AskParam.exe /c"Title" /p"Select"
%%commander_path%%\Utils\TCMC\TCMC.exe  CDS %1 2023 524
%commander_path%\WCMICONS.DLL,41

%commander_path%\

-1

Но ничего не происходит

#24:  Author: FlasherLocation: Москва PostPosted: Wed Oct 03, 2012 20:23
    —
jentoso wrote:
Например чтобы отображались только те файлы, расширение которых буду введены через askparam.
А AskParam тут к чему? Фильтровать по cd *.ext1 *.ext2 *.ext3 не судьба?

#25:  Author: jentoso PostPosted: Wed Oct 03, 2012 20:30
    —
Flasher, cd *.ext1 *.ext2 *.ext3 подразумевает заранее выбранные расширения.

#26:  Author: FlasherLocation: Москва PostPosted: Wed Oct 03, 2012 20:31
    —
jentoso
Ну а Ctrl+F12 ?

#27:  Author: jentoso PostPosted: Wed Oct 03, 2012 20:41
    —
Flasher, дополнительное сочетание Ctrl+F10 и "захламление истории". Конечно, если возможности нет данными утилитами. То это единственный вариант. Вопрос просто был в возможности

#28:  Author: sa PostPosted: Wed Oct 03, 2012 21:08
    —
jentoso
У меня в настройках быстрого поиска используется вариант “Буква (с диалогом поиска)” без выбора опций точного соответствия имени и для решения задачи, как правило, бывает достаточно набрать на клавиатуре .ext или даже просто ext

#29:  Author: jentoso PostPosted: Wed Oct 03, 2012 21:11
    —
sa, это стандартный вариант быстрого поиска, который не сможет отобразить сразу например txt, ini, inf. Спасибо за помощь о обсуждение.

#30:  Author: sa PostPosted: Wed Oct 03, 2012 21:30
    —
Понял. Может, тогда кнопка с командой cd и параметрами ? *.ext1 *.ext2 *.ext3 (знак вопроса для запроса параметров)?

#31:  Author: jentoso PostPosted: Wed Oct 03, 2012 22:37
    —
sa, при использовании CD вылетает ошибка
Quote:

Не удается найти "cd". Проверьте, правильно ли указано имя и повторите попытку.

Code:
TOTALCMD#BAR#DATA
%commander_path%\AskParam.exe
/c"Title" /p"Enter" cd %%1
%commander_path%\WCMICONS.DLL,11



-1

#32:  Author: sa PostPosted: Wed Oct 03, 2012 22:50
    —
Я имел ввиду такую кнопку:
Code:
TOTALCMD#BAR#DATA
cd
? *.ext1 *.ext2 *.ext3
WCMICONS.DLL,41



-1

#33:  Author: jentoso PostPosted: Wed Oct 03, 2012 22:58
    —
sa, такой вариант срабатывает. Остановлюсь на нем. Спасибо

#34:  Author: sa PostPosted: Thu Oct 04, 2012 09:26
    —
Можно ещё ходовые наборы расширений “заскладировать” в строке “Путь запуска:” кнопки и копировать по мере надобности в строку параметров (возможно уже и без знака ?).

#35:  Author: jentoso PostPosted: Thu Oct 04, 2012 09:31
    —
sa, я понимаю что мы отошли от обсуждения данной программы. Просто добавлю, что добавил "ходовые расширения" через TWinKey

#36:  Author: sa PostPosted: Thu Oct 04, 2012 10:33
    —
jentoso wrote:
добавил "ходовые расширения" через TWinKey
У меня речь о ходовых наборах расширений, используемых в предложенной кнопке.
PS
Вообще-то преимуществ в кнопке по сравнению с Ctrl+F12 не вижу, кроме сомнительных плюсов в виде отсутствия привязки фильтра к выбранной панели и меньшего “захламления истории” фильтров.
Quote:
мы отошли от обсуждения данной программы
Пардон за оффтоп, я в обсуждении самой программы-то и не поучаствовал…

#37:  Author: MVVLocation: Ростов-Дон PostPosted: Thu Oct 04, 2012 16:17
    —
Раз уж всё решилось, просто покажу, что надо было сделать с кнопкой.
jentoso wrote:
MVV, вот пытаюсь создать такую кнопку
Code:
TOTALCMD#BAR#DATA
AskParam.exe /c"Title" /p"Select"
%%commander_path%%\Utils\TCMC\TCMC.exe  CDS %1 2023 524
...

В первую очередь, конечно, надо читать справку к TCMC, команда CDS там принимает 2 обязательных параметра, даже если один из них пуст. Далее надо разбираться, как передать в ней маску. Но для простой передачи явного набора масок можно просто:
Code:
AskParam.exe
/c"Выбор маски" /p"Введите маску:" %%commander_path%%\Utils\TCMC\TCMC.exe  CDS "%P\%%1" "" CM2023 CM524
...

Другое дело, что это не работает, т.к., похоже, тотал не позволяет менять маску внешней командой смены каталога.

#38:  Author: KopBuHLocation: Tashkent, Uzbekistan PostPosted: Fri Feb 15, 2013 12:39
    —
а можно добавить поддержку скрытого запуска программ?.
типо /s (silent)?

#39:  Author: MVVLocation: Ростов-Дон PostPosted: Fri Feb 15, 2013 14:44
    —
Добавлю /s0 для скрытого, /s1 для обычного, /s2 для свернутого, /s3 для развернутого и т.п. согласно параметрам SW_* функции ShellExecute.

#40:  Author: KopBuHLocation: Tashkent, Uzbekistan PostPosted: Fri Feb 15, 2013 14:59
    —
неплохо было бы добавить ключ, указывающий что текст %переменная% - это переменная, значение которой нужно передать запускаемой программе.

#41:  Author: MVVLocation: Ростов-Дон PostPosted: Fri Feb 15, 2013 16:25
    —
В смысле? Переменные и так раскрываются.


Обновил программу.

AskParam 1.0.2.70:
+ параметр /s{0-8} для запуска в свернутом, развернутом или скрытом виде

#42:  Author: MVVLocation: Ростов-Дон PostPosted: Mon Feb 18, 2013 19:06
    —
Очередная порция полезностей (надеюсь).

AskParam 1.0.3.80:
+ поле ввода заменено выпадающим списком
+ можно задавать несколько строк списка с помощью нескольких параметров /t
+ параметр /u работает как /t, но делает свою строку текущей
+ параметр /r- отключает очистку выпадающего списка после ввода каждого параметра

#43:  Author: HomeDimoN PostPosted: Mon Feb 25, 2013 14:11
    —
MVV wrote:
Очередная порция полезностей (надеюсь).
AskParam 1.0.3.80
+ поле ввода заменено выпадающим списком

Очень удобно!!

Но может стоит ввести конфигурационные файлы? Что бы выбирать под разные задачи..
А то очень неудобно список вбивать, из эндцать позиций...
А если и вбил, потом, менять что то, в строке неудобно...
И хистори бы... с возможностью подчищать её...
И появление подсказок, из списка, по мере набора, с возможностью выбора с клавиатуры...

#44:  Author: GGS PostPosted: Mon Feb 25, 2013 19:22
    —
MVV
Можно разъяснить, на примерах, работу /r
Как-то не понятно.

#45:  Author: MVVLocation: Ростов-Дон PostPosted: Fri Mar 01, 2013 14:59
    —
HomeDimoN,
Боюсь, мне будет лень столько добавлятьSmile пока ничего не обещаю.

GGS,
Если режим включён, очередной запрос параметра очищает список. Пример тут. Возможно, не совсем логично, но цель была - сохранить прежний синтаксис.

#46:  Author: jentoso PostPosted: Fri Mar 01, 2013 15:23
    —
MVV, то есть /r работает с уже составленным заранее списком?

#47:  Author: MVVLocation: Ростов-Дон PostPosted: Fri Mar 01, 2013 16:18
    —
jentoso,
Список составляется с помощью указания нескольких команд /t или /u перед каждой командой /p. Если перед запросом очередного параметра режим очистки выключен, список не очищается, что позволяет делать несколько запросов с одинаковыми списками. Пример:
Code:
AskParam /r- /tDebug /uRelease /pParam1: /r /pParam2: /tWin32 /tx64 /pParam3:

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

Возможно, добавлю какой-нибудь параметр типа /r1 для однократной очистки (типа, указывать всегда перед /p, если надо очистить список).

#48:  Author: jentoso PostPosted: Sat Mar 02, 2013 10:32
    —
MVV, возможно сделать для для параметров /t /u комментарии? Попробую объяснить на примере. Сделал пользовательские комнады
Code:
[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'ом

Теперь в выпадающем списке, показывается путь куда распаковать архив, в текущей панели или противоположной:

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

#49:  Author: MVVLocation: Ростов-Дон PostPosted: Sat Mar 02, 2013 12:28
    —
А порядок их следования разве ничего не говорит? Первый - текущая, и т.п. И потом, толку с фразы "В противоположной", если для незначительного изменения пути (скажем, распаковать в поддиректорию 1 или в директорию уровнем чуть выше) придётся его полностью вписывать, убирая бесполезное "В противоположной". Путаницы будет куда больше.

Ничто не запрещает написать батник, который будет вызываться через AskParam, и который будет заменять "В противоположной" на путь, если так хочется.

#50:  Author: jentoso PostPosted: Sat Mar 02, 2013 18:00
    —
Quote:
А порядок их следования разве ничего не говорит?

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

Вместо "В противоположной" пользователь мог бы написать любой коммент. Я имел ввиду /t"X -cfg- -ibck -kb -or -- %N", а пользователь не знает что сделает этот параметр, но к нему будет коммент, например /tc"Распаковка архива в фоновом режиме".
Хорошо, я просто спросил о данной возможности

#51:  Author: MVVLocation: Ростов-Дон PostPosted: Sat Mar 02, 2013 20:27
    —
Можно же батник вызвать, который будет проверять, содержит ли этот параметр строку "Распаковка архива в фоновом режиме", и подставлять сложный набор параметров. Тем более, можно запускать батник в скрытом виде, чтобы не было черного окна.

#52:  Author: MVVLocation: Ростов-Дон PostPosted: Fri Mar 08, 2013 23:30
    —
AskParam 1.0.3.86:
+ параметр /r! для прямой очистки выпадающего списка
* горизонтальная прокрутка для выпадающего списка
* длина строки параметров увеличена до 32767 символов

#53:  Author: jentoso PostPosted: Sat Mar 09, 2013 00:35
    —
MVV, не первый раз приходится уточнять о новых введения. Вот и на сей раз параметр /r! не совсем понятен.

#54:  Author: MVVLocation: Ростов-Дон PostPosted: Sat Mar 09, 2013 16:05
    —
Ну он как раз для упрощения работы с очисткой списка введён. Приведенный выше пример, но с использованием нового /r!:
Code:
AskParam /r- /tDebug /uRelease /pParam1: /pParam2: /r! /tWin32 /tx64 /pParam3:

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

Найду время, допишу Readme, параметры будут объясняться подробнее.

#55:  Author: HA3APET PostPosted: Fri Jun 14, 2013 16:44
    —
MVV
Спасибо за программу, но я в ней совсем запутался. Приведи пожалуйста пример для двух параметров. У меня вот такая задача:
Code:
netsh wlan set hostednetwork mode=allow ssid="SoftAP" key="88888888" keyUsage=persistent

то есть надо чтобы сначала вышел диалог для названия SSID, затем диалог на ввод ключа KEY

#56:  Author: MVVLocation: Ростов-Дон PostPosted: Fri Jun 14, 2013 19:23
    —
Что-то вроде:
Code:
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 подряд, чтобы был списочек предлагаемых значений (примеры выше).

#57:  Author: LonerDLocation: Донецк PostPosted: Fri Oct 11, 2013 21:45
    —
Цель - отобразить окошко для ввода параметров (одного или нескольких через пробел) вручную.
На примере Nconvert (консольная утилита конвертирования изображений).
Работающий вариант реализации:
Code:
[em_Nconvert]
cmd=%commander_path%\Utilities\DreamLair\Nconvert\Nconvert.exe
param=? %P%S

Минус этого метода в том, что в появляющемся окошке для ввода параметров перечислены все передаваемые программе файлы.

Этого можно избежать с помощью AskParam.
Сумел дойти только до такого решения:
Code:
[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 - отсекается.
А как же правильно тогда записать?

#58:  Author: MVVLocation: Ростов-Дон PostPosted: Fri Oct 11, 2013 22:11
    —
Не понял, какая цель у параметра-пробела. Он по синтаксису там точно нужен? Какой синтаксис должен быть у nconvert?

Чтобы посмотреть, что именно передается программе, можно, например, сделать так:
Code:
[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 есть всегда, и меняется только его параметр, имеет смысл его захардкодить и вводить только тип (можно даже накидать несколько типов в выпадающий список).
Code:
... /tpng /tjpg /tgif /p"Enter output type:" ... -out %%1

#59:  Author: LonerDLocation: Донецк PostPosted: Fri Oct 11, 2013 23:35
    —
Quote:
Не понял, какая цель у параметра-пробела.

Чтобы не нужно было вводить этот пробел в окне ввода AskParam. Если нет пробела, то Nconvert.exe и параметр слипались, получается Nconvert.exe-out и вообще ничего не происходит.

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

Только в предложенном варианте с cmd.exe надо ещё проценты учетверять: %%%%commander_path%%%%

Quote:
Кстати, обычно, если ключ и его параметр разделяются пробелом, они не заключаются в кавычки (т.е. надо просто %%1, а не "%%1").

Спасибо, да, в этом и была проблема. Если убрать кавычки, то и доп.пробел прописывать не нужно. Рабочий вариант:
Code:
[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


Last edited by LonerD on Sat Oct 12, 2013 16:06; edited 1 time in total

#60:  Author: MVVLocation: Ростов-Дон PostPosted: Sat Oct 12, 2013 14:54
    —
Quote:
Если нет пробела, то Nconvert.exe и параметр слипались, получается Nconvert.exe-out и вообще ничего не происходит.

AskParam не трогает строку параметров, лишь подставляет текст вместо %%d, пробелы пропадать из-за нее не могут.

Quote:
Если убрать кавычки, то и доп.пробел прописывать не нужно.

Во, другое дело. Smile
Но вообще странно, что пустой параметр мог как-то помочь в этом. Серия пробелов не в кавычках - это разделитель между параметрами, а пробел внутри кавычек - это часть этого параметра, соответственно, этот пробел программа обрабатывает не как разделитель, а как параметр.

#61:  Author: MVVLocation: Ростов-Дон PostPosted: Sat Dec 14, 2013 15:04
    —
Выложил новую версию. Теперь можно изменять текст кнопок (хоть для каждого параметра), запрещать редактирование выпадающего списка и показывать подсказки для пунктов.

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


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

#62:  Author: wOxxOm PostPosted: Sat Dec 14, 2013 16:42
    —
Очень удобной фишкой был бы опциональный вывод всех параметров в одном окне (друг под другом) с переключением между элементами по Tab/Shift-Tab или даже с &-акселераторами.

#63:  Author: MVVLocation: Ростов-Дон PostPosted: Sat Dec 14, 2013 16:48
    —
Акселераторы работают автоматически, если в заголовках есть символ &. Но организация "всё в одном" совершенно не вписывается в текущую концепцию.

#64:  Author: wOxxOm PostPosted: Fri Feb 21, 2014 03:15
    —
Опция для указания ширины окна была бы полезной, а то редактировать встроенный темплейт окошка не слишком удобно.

#65:  Author: MVVLocation: Ростов-Дон PostPosted: Fri Feb 21, 2014 11:49
    —
Сдвигать все элементы окна динамически в коде ещё менее удобно...

#66:  Author: wOxxOm PostPosted: Fri Feb 21, 2014 12:20
    —
Интересное противопоставление удобства программы при многократном использовании с удобством единократного написания не слишком сложного кода для ресайза...

#67:  Author: MVVLocation: Ростов-Дон PostPosted: Fri Feb 21, 2014 14:56
    —
Да, надоело мне для каждого своего окна вручную этот код писать, что тут поделаешь. Как-нибудь напишу и для этого.


Добавлено в 23:30:

Добавил параметр /v для установки ширины, также ширину можно менять мышью.

Beta 108

#68:  Author: wOxxOm PostPosted: Sat May 03, 2014 18:55
    —
Я туплю или таки нет возможности вернуться к предыдущему окошку в случае нескольких параметров?

#69:  Author: MVVLocation: Ростов-Дон PostPosted: Sat May 03, 2014 19:03
    —
AskParam 1.0.6.112:
+ добавлена 64-битная версия
+ изменяемая ширина окна
+ начальная ширина окна задается ключом /v


Skif_off,
Спасибо, что написал мне про умершую ссылку, я и забыл, что так и не выложил финальную версию.


wOxxOm,
Такой возможности нет.

#70:  Author: MishaEmS PostPosted: Thu Jun 26, 2014 09:55
    —
MVV
Подскажите, а можно ли сделать окно утилиты "поверх всех окон"?
Спасибо!

#71:  Author: MVVLocation: Ростов-Дон PostPosted: Thu Jun 26, 2014 10:47
    —
Пока нельзя. Записал себе в todo, будет время, добавлю.

#72:  Author: Dimsok PostPosted: Mon Dec 01, 2014 13:29
    —
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Plugins\exe\AskParam.exe /c"Не работает" /p"Все равно" %ComSpec% /K for /f "delims=" %%# in
('type %WF) do findstr %%1 "%%%%#"

Что тут не так? Пишет, не удается найти файл ...tmp

#73:  Author: MVVLocation: Ростов-Дон PostPosted: Mon Dec 01, 2014 18:19
    —
Тут сразу много что не так. У меня заработало такое:
Code:
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Addons\AskParam\AskParam.exe /c"Не работает" /p"Все равно" %ComSpec%
/k "for /f "usebackq delims=" %%%%# in (`type "%WF"`) do findstr "%%1" "%%%%#""
cmd.exe



-1

Поясняю: usebackq включает режим обработки команд в косых кавычках, сами кавычки в скобках обязаны быть именно косыми ``, и их должно быть две. Плюс, саму команду после /k лучше в двойные кавычки заключить. Ну и все имена файлов лучше тоже в кавычки заключать. Наконец, число % не везде было правильным.

#74:  Author: Dimsok PostPosted: Mon Dec 01, 2014 20:36
    —
Заработало? "Не удается найти указанный файл"

#75:  Author: MVVLocation: Ростов-Дон PostPosted: Mon Dec 01, 2014 20:46
    —
А у меня работает.
Quote:
C:\Windows>findstr "Driver" "msdfmap.ini"

C:\Windows>findstr "Driver" "ODBC.INI"
┴рчр фрээ√ї MS Access=Microsoft Access Driver (*.mdb) (32 bit)
╘рщы√ Excel=Microsoft Excel Driver (*.xls) (32 bit)
╘рщы√ dBASE=Microsoft dBase Driver (*.dbf) (32 bit)
Driver32=C:\Windows\system32\odbcjt32.dll
Driver32=C:\Windows\system32\odbcjt32.dll
Driver32=C:\Windows\system32\odbcjt32.dll

C:\Windows>findstr "Driver" "Sandboxie.ini"

C:\Windows>findstr "Driver" "system.ini"

C:\Windows>

Но иногда почему-то появляется про файл.
А, ну конечно, ты же не указал для AskParam ключ /w, и получилась гонка: кто первый, тотал увидит, что AskParam закрылась, и удалит файл-список, или cmd.exe успеет его прочитать?
Укажи /w перед /c, самым первым параметром AskParam.

#76:  Author: Dimsok PostPosted: Mon Dec 01, 2014 21:03
    —
Ага спасибо. Кнопки типа %ComSpec% /c for /f "delims=" %# in будут работать с askparam только по такому образцу? А то у меня много подобных к примеру для ffmpg для конвертирования под разные форматы. Надо будет объединить в одну

#77:  Author: MVVLocation: Ростов-Дон PostPosted: Mon Dec 01, 2014 21:35
    —
Dimsok,
Вообще не представляю, как у тебя кнопки работали с одним апострофом вместо двух косых черт, ещё и без usebackq (если используешь type, то косые черты и usebackq обязательны). Основная масса ошибок была именно в синтаксисе команды for, а не в тонкостях связки AskParam+cmd, из которых только число % в одном месте было неверным. Рабочий пример у тебя есть, остальные кнопки исправишь по нему)


Наконец добавил в AskParam ключ /a, чтобы делать диалог поверх всех окон.

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

#78:  Author: Dimsok PostPosted: Mon Dec 01, 2014 21:51
    —
Не знаю, вроде кнопки работали по такому образцу. Так Flasher научил Very Happy

#79:  Author: FlasherLocation: Москва PostPosted: Mon Dec 01, 2014 23:38
    —
Я так
Dimsok wrote:
('type %WF)
не учил, не надоть.

MVV wrote:
если используешь type, то косые черты и usebackq обязательны
Смелое утверждение, но неправда. Smile

#80:  Author: MVVLocation: Ростов-Дон PostPosted: Tue Dec 02, 2014 00:50
    —
Flasher wrote:
Смелое утверждение, но неправда. Smile

Никогда не указывал команды в апострофах, но чую, что куча проблем всплывет.

#81:  Author: FlasherLocation: Москва PostPosted: Tue Dec 02, 2014 14:42
    —
До сего момента пока не всплывало.

#82:  Author: Dimsok PostPosted: Tue Dec 02, 2014 23:42
    —
Никак не получается создать кнопку с выходными файлом на основе предложенного варианта. Вот пробую:
Code:
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Plugins\exe\AskParam.exe /w /c"convert vid" /t"avi" /t"flv" /p"convert video" %ComSpec%
/k "for /f "usebackq delims=" %%%%# in (`type "%WF"`) do "%%COMMANDER_PATH%%\Utils\video\ffmpeg\bin\ffmpeg.exe" -i "%P%%%%#" "%T%%%%~n#.%%1""
cmd.exe
Convert with ffmpeg


-1


В консоли вроде все правильно показывается, а пишет "системе не удается найти указанный путь"

Добавлено спустя 3 минуты:

А все, ступил. Консоль же не понимает commander_path

#83:  Author: MVVLocation: Ростов-Дон PostPosted: Tue Dec 02, 2014 23:53
    —
Консоль, запущенная из тотала или процессов, запущенных из тотала, понимает COMMANDER_PATH (кроме случаев запуска с повышением).

#84:  Author: Dimsok PostPosted: Tue Dec 02, 2014 23:59
    —
Не знаю, у меня в том примере, который я привел, не работало. Как поменял на путь типа "program files", заработало. С чего бы это?

#85:  Author: wOxxOm PostPosted: Wed Dec 03, 2014 00:04
    —
Dimsok, 1. похоже сейчас у вас основная программа в кнопке - cmd.exe, а надо AskParam.exe 2. возможно надо четыре процента %%%%COMMANDER_PATH%%%%\Utils\video\ffmpeg в команде.

P.S. 1. ключ /k у cmd вообще не в тему - нужен /c, 2. в кавычки брать всю команду совершенно не обязательно 3. %comspec% излишество, достаточно просто cmd, 4. usebackq и обратный апостроф необязателен 5. ffmpeg лучше закинуть куда-то в папку в PATH 6. зачастую перекодировать в ffmpeg не надо и достаточно копировать напрямую -c: copy или по крайней мере -c:v copy

Code:
/c"convert vid" /t"avi" /t"flv" /p"convert video" /w cmd
/c for /f "delims=" %%%%# in ('type "%WF"') do ffmpeg -i "%P%%%%#" "%T%%%%~n#.%%1"

%COMMANDER_PATH%\Plugins\exe\AskParam.exe

#86:  Author: Dimsok PostPosted: Wed Dec 03, 2014 00:09
    —
Будто я с 4% не пробовал
Ключ /k в тему, когда надо посмотреть, что не так
Мне видней, где мне держать ffmeg. Давайте ещё все в корне диска сохранять, и проблем с путями будет меньше

#87:  Author: MVVLocation: Ростов-Дон PostPosted: Wed Dec 03, 2014 00:19
    —
wOxxOm wrote:
1. похоже сейчас у вас основная программа в кнопке - cmd.exe

Не, у него основная - AskParam. Это у него иконка cmd.exe.
wOxxOm wrote:
2. возможно надо четыре процента

А это верно. Проверить, правильная ли команда формируется, можно с помощью echo и pause. Кстати, вот вариант, где окно остаётся, но закрывается по любой клавише (чтобы работал, а не просто печатал команды, надо убрать @echo):
Code:
/c "if 0==0 (for /f "usebackq delims=" %%%%# in (`type "%WF"`) do @echo "%%%%COMMANDER_PATH%%%%\Utils\video\ffmpeg\bin\ffmpeg.exe" -i "%P%%%%#" "%T%%%%~n#.%%1") & pause"

wOxxOm wrote:
P.S. 1. ключ /k у cmd вообще не в тему - нужен /c

Так не будет виден результат. Разве что с извращением типа того, что выше.
wOxxOm wrote:
2. в кавычки брать всю команду совершенно не обязательно

А это как раз-таки очень даже рекомендуется. А то cmd.exe так любит удалять внешние кавычки, если находит их, поэтому такая привычка может избавить от головной боли.
Quote:
4. usebackq и обратный апостроф необязателен

Не помешает точно. А то вдруг имени файла встретится апостроф?
Quote:
5. ffmpeg лучше закинуть куда-то в папку в PATH

У него портабельный вариант, поэтому это плохая идея.
wOxxOm wrote:
6. зачастую перекодировать в ffmpeg не надо и достаточно копировать напрямую -c: copy или по крайней мере -c:v copy

В твоем примере где-то должен быть -c?

#88:  Author: wOxxOm PostPosted: Wed Dec 03, 2014 00:25
    —
Dimsok, ну без прямого доступа к компу через teamviewer и т.д. непонятно, почему не работает у вас. Я для отладки подобных непоняток вписываю перед cmd /c программку показывающую все параметры: showcmdline cmd /c ........

исходник для fasm:
Code:
include 'win32wx.inc'
.code
  start:
  invoke GetCommandLineW
  invoke MessageBoxW,0,eax,0,MB_OK
  invoke ExitProcess,0
.end start


MVV, насчет -c:v это так просто, попутно вспомнилось.


Last edited by wOxxOm on Wed Dec 03, 2014 00:29; edited 1 time in total

#89:  Author: Dimsok PostPosted: Wed Dec 03, 2014 00:28
    —
Кстати, MVV, а с помощью /v можно только увеличить окно? Меньше 500 ничего? Я пробовал по-всякому, но получалось только увеличить окно, хотя куда уж больше изначального

#90:  Author: MVVLocation: Ростов-Дон PostPosted: Wed Dec 03, 2014 15:19
    —
Специально проверил сейчас, можно как увеличить ширину, так и уменьшить, но у окна задана минимальная ширина - 420 пикселей.

#91:  Author: yozhik PostPosted: Wed Dec 10, 2014 16:47
    —
Здравствуйте!
MVV
Активно пользуюсь AskParam' ом и вас поминаю добрым словом.
Для полного счастья не хватает вомзожности обработки условий. Например, что-то наподобие:
Code:
AskParam /c"Условия" /t"Создать файл: -c" /u"Переместить файл: -m" /t"Удалить файл: -d" /p(h)"Параметр 1:" /IF"%1"="-d"OR"-m" /u"С выводом предупреждения: -w1" /t"Без вывода предупреждения: -w0" /p(h)"Параметр 2:" "some.exe" "%1" "%2"

Т.е. чтобы в зависимости от выбранного параметра 1, окно для параметра 2 или выводилось, или не выводилось. Как в этом примере окошко "Параметр 2" будет выведено только, если было выбрано "-m" или "-d".

Возможно ли что-то такое реализовать? Если да, то не могли бы сделать? Smile

#92:  Author: MVVLocation: Ростов-Дон PostPosted: Wed Dec 10, 2014 20:30
    —
Да уж, запросики у вас... Боюсь, это потребует конкретной переработки. Попробуй после первого выбора запускать батник, который будет запускать новую AskParam...

#93:  Author: yozhik PostPosted: Wed Dec 10, 2014 21:46
    —
Quote:
Да уж, запросики у вас...

Назрела практическая необходимость. Использую пару десятков скриптов, в каждом из которых по многу параметров. Запоминать их все нереально, да и оверкил, не все регулярно используются.

Quote:
Боюсь, это потребует конкретной переработки.

В «боюсь» не поверил Cool Если идея неплохая, может стоит взяться?

Quote:
Попробуй после первого выбора запускать батник

Много костылей получится. При том, если учесть, что AskParam сама – вспомогательная утилита, то получается костыли для «костыля».
Для каждого скрипта тогда придётся по несколько батников ваять, потому что иногда там не одно условие попадается. Я пока так выпутываюсь: в /p"..." прописываю напоминания, типа:
Code:
/u"С пердупреждением: -w1" /t"Без предупреждения: -w0" /t"Пусто: " /p(h)"!! Только для -m и -d !! Параметр 2:"

И, как видите, добавляю третью фейковую строку, для пустоты.

В общем, если заинтересуетесь, будем очень рады Smile

#94:  Author: goraLocation: Иваново PostPosted: Thu Dec 18, 2014 10:43
    —
MVV

1 Можно ли запустить AskParam из VBS скрипта и получить результат обратно в скрипт? Как? Желательно без CMD.

2 Можно ли в /p использовать многострочный текст? Поддерживаются ли символы перевода строки (какие)?

#95:  Author: MVVLocation: Ростов-Дон PostPosted: Thu Dec 18, 2014 11:29
    —
Quote:
1 Можно ли запустить AskParam из VBS скрипта и получить результат обратно в скрипт? Как? Желательно без CMD.

Результатом запуска AskParam всегда является выполнение какой-то команды. Из скрипта его получится получить, только если команда запишет его в файл.
Хм, а разве из скрипта нельзя отображать диалоговые окна напрямую?

Quote:
2 Можно ли в /p использовать многострочный текст? Поддерживаются ли символы перевода строки (какие)?

Нет, ничего такого на данный момент нет.

#96:  Author: goraLocation: Иваново PostPosted: Thu Dec 18, 2014 11:36
    —
MVV wrote:
Из скрипта его получится получить, только если команда запишет его в файл.

Т.е. применение CMD для записи в файл обязательно? И без файла ни как?
MVV wrote:
а разве из скрипта нельзя отображать диалоговые окна напрямую?

Ну с выпадающим то списком в VBS окон нет... Sad

#97:  Author: FlasherLocation: Москва PostPosted: Thu Dec 18, 2014 11:59
    —
gora wrote:
Т.е. применение CMD для записи в файл обязательно? И без файла ни как?
Передавать напрямую можно было бы только в потоке, но AskParam - неконсольная, т.ч. без записи никак. Но вместо CMD это может быть и любая другая неконсольная программа, поддерживающая параметры, включая и скрипты, которые могут записать данные в файл.
gora wrote:
Ну с выпадающим то списком в VBS окон нет...
Вызвать некий системный диалог с выпадающим списком можно. Если речь о рисовании окон, то с доп. компонентами типа WSO вполне возможно.

#98:  Author: goraLocation: Иваново PostPosted: Thu Dec 18, 2014 12:07
    —
Flasher wrote:
любая другая неконсольная программа, поддерживающая параметры

Можно пару примеров таких программ?
Flasher wrote:
включая и скрипты, которые могут записать данные в файл.

Можно пример применения VBS в данном конкретном случае?

Добавлено спустя 2 минуты:

Flasher wrote:
Вызвать некий системный диалог с выпадающим списком можно. Если речь о рисовании окон, то с доп. компонентами типа WSO вполне возможно.

Покажите, как?

#99:  Author: FlasherLocation: Москва PostPosted: Thu Dec 18, 2014 13:26
    —
gora wrote:
Можно пару примеров таких программ?
WinRAR, 7zG.
gora wrote:
Можно пример применения VBS в данном конкретном случае?
А я случая конкретного не вижу. Вообще я поспешил насчёт только потока и записи. Одних параметров более чем достаточно.
Комбинированный вариант:
Code:
Dim WSH : Set WSH = CreateObject("WScript.Shell")
With CreateObject("Scripting.FileSystemObject")
  TempFile = CreateObject("Shell.Application")._
  NameSpace(WSH.ExpandEnvironmentStrings("%TEMP%")).Self.Path & "\" & .GetTempName
  .OpenTextFile(TempFile, 2, True, -1).Write WScript.Arguments(0)
  MsgBox .OpenTextFile(TempFile,,,-1).ReadLine & " " & WScript.Arguments(1)
 .DeleteFile TempFile, 1
End With
Стандартный вариант:
Code:
MsgBox WScript.Arguments(0) & " " & WScript.Arguments(1)
Code:
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\AskParam.exe
/c"Передаём в окно vbs" /t"Шла Саша" /t"Шёл Петя" /p"Начало:" /r- /t"по шоссе." /t"по тропинке." /p"Продолжение:" "%%COMMANDER_PATH%%\Scripts\Test.vbs" "%%1" "%%2"
sud.dll,1
vbs + AskParam
%COMMANDER_PATH%\Utils\
-1
Стандартный вариант подходит для запуска скрипта из AskParam, что вообще по сути логичней. Зачем наоборот?
Если вызов непосредственно из скрипта и никак иначе, то пример следующий:
Code:
If WScript.Arguments.Count = 0 Then
  AskParam = """%COMMANDER_PATH%\Utils\AskParam.exe"""
  CreateObject("WScript.Shell").Exec AskParam & " /c""Передаём в окно vbs"" /t""Шла Саша"" /t""Шёл Петя"" /p""Начало:"" /r- /t""по шоссе."" /t""по тропинке."" /p""Продолжение:"" """ & WScript.ScriptFullName & """ ""%1"" ""%2"""
  WScript.Quit
Else MsgBox WScript.Arguments(0) & " " & WScript.Arguments(1)
End If

gora wrote:
Покажите, как?
Времени нет. См. ControlListView для AutiItX.
А вообще о таких вещах правильно было бы тут спрашивать.

#100:  Author: MVVLocation: Ростов-Дон PostPosted: Thu Dec 18, 2014 14:49
    —
Ещё можно просто вызвать другую копию этого же скрипта с определённым ключом и передать ему соответствующие параметры, а скрипт уже хоть в файл, хоть ещё куда пусть пишет то, что ему передали. Кстати, можно ли двум копиям скрипта через какой-нибудь пайп обмениваться данными?

#101:  Author: goraLocation: Иваново PostPosted: Thu Dec 18, 2014 15:01
    —
Flasher
Спасибо за разъяснения.
Я понял, что утилита не совсем то, что нужно мне, но я попробую ее таки использовать пока не найду другого решения.
Про офтоповость моих вопросов я уже догадался, но я и не собирался изначально уходить в скрипты. В общем я закругляюсь.


Last edited by gora on Thu Dec 18, 2014 15:40; edited 1 time in total

#102:  Author: FlasherLocation: Москва PostPosted: Thu Dec 18, 2014 15:23
    —
MVV wrote:
Ещё можно просто вызвать другую копию этого же скрипта с определённым ключом
Можно и без ключа, см. выше.
MVV wrote:
Кстати, можно ли двум копиям скрипта через какой-нибудь пайп обмениваться данными?
Только через выходный поток, запуская скрипт через CScript.exe, но это не назовёшь именованным каналом, да и нет в этом необходимости.

gora wrote:
Я понял, что утилита не совсем то, что нужно мне
А что нужно?

#103:  Author: goraLocation: Иваново PostPosted: Thu Dec 18, 2014 16:44
    —
MVV wrote:
а скрипт уже хоть в файл, хоть ещё куда пусть пишет то, что ему передали

Столкнулся с :
1 Запись батником
- кириллица, кодировка 866
- проблемами со спецсимволами
2 Запись VBS
- пропадают кавычки

Какие еще есть варианты?

Flasher wrote:
А что нужно?

Не буду отвлекать ибо:
Flasher wrote:
Времени нет

Flasher wrote:
о таких вещах правильно было бы тут спрашивать

#104:  Author: FlasherLocation: Москва PostPosted: Fri Dec 19, 2014 12:18
    —
Quote:
1 Запись батником
- кириллица, кодировка 866
chcp 1251?
gora wrote:
2 Запись VBS
- пропадают кавычки
AskParam к этому отношения не имеет. Параметры передаются без кавычек.
gora wrote:
Не буду отвлекать ибо:
Подумать о вариантах время всегда найдётся.

#105:  Author: goraLocation: Иваново PostPosted: Fri Dec 19, 2014 13:12
    —
Flasher wrote:
chcp 1251?

Конечно, я же параметр буду обрабатывать в VBS скрипте, значит и кодировка нужна 1251
Flasher wrote:
AskParam к этому отношения не имеет.
Это как посмотреть... Непосредственный виновник конечно не AskParam, но ведь мне здесь предлагают любой скрипт для получения (передачи) параметра в файл, а VBS для этого и не подходит. Так что получается и нет таких уж простых способов получить параметр, введенный в AskParam.

MVV

Можно ли попросить Вас добавить ключ, который не будет заставлять утилиту "выполнять команду", а вместо этого запишет введенное в утилите значение в файл? Кодировка файла 1251. Путь к файлу прописывается в этом новом ключе.

Если это невозможно, то наплюйте, выкручусь...

#106:  Author: FlasherLocation: Москва PostPosted: Fri Dec 19, 2014 13:24
    —
gora wrote:
мне здесь предлагают любой скрипт для получения (передачи) параметра в файл, а VBS для этого и не подходит.
Не в файл, а в переменную. И по какой причине не подходит? Причина может быть только одна - кавычки нужны внутри записи, а не по краям. Это так? Если да, то зачем?
И тут это решается заменой, например, на апостроф, а в скрипте - обратной заменой через Replace.


Last edited by Flasher on Fri Dec 19, 2014 14:24; edited 1 time in total

#107:  Author: goraLocation: Иваново PostPosted: Fri Dec 19, 2014 13:29
    —
Flasher wrote:
Если да, то зачем?

Надо запускать приложение с такими, например, параметрами:
Code:
-InstallPath="%ProgramFiles%\\IEPro"
-SetEnvironment="Var1=E:\\totalcmd" -SetEnvironment="Var2=%%T\\"
-FinishMessage="new_finish_message"
-InstallPath="%Path7z%\\7zSFX_Tools" -FinishMessage="7z SFX Tools установлен!" -ai -gm2 -fm20

#108:  Author: FlasherLocation: Москва PostPosted: Fri Dec 19, 2014 13:34
    —
А почему тогда не использовать в качестве параметров записи в кавычках? Т.е. в данном случае 6 параметров.

#109:  Author: goraLocation: Иваново PostPosted: Fri Dec 19, 2014 13:35
    —
Flasher wrote:
Не в файл, а в переменную.

В какую переменную? Мне здесь объяснили, что я могу получить параметр для своих целей ТОЛЬКО через файл! О какой переменной разговор?

#110:  Author: FlasherLocation: Москва PostPosted: Fri Dec 19, 2014 13:36
    —
Советую перечитать внимательнее.

#111:  Author: goraLocation: Иваново PostPosted: Fri Dec 19, 2014 13:39
    —
Flasher
Я не люблю такой разговор. Вместо помощи одни вопросы в стиле:"А нафига так делать, а не эдак?" Мне дольше объяснять и доказывать правильность своего решения, лучше уж не надо такой помощи...
Не обессудьте.

#112:  Author: FlasherLocation: Москва PostPosted: Fri Dec 19, 2014 13:44
    —
gora
А, т.е. это чисто для себя делается, а не для людей. Ну, тогда ясно. Больше помогать не буду.

#113:  Author: MVVLocation: Ростов-Дон PostPosted: Fri Dec 19, 2014 13:59
    —
Не пойму, в чем сложность вызова cmd для записи в файл? И почему нельзя вызвать приложение с указанными параметрами прямо из AskParam?

Только через файл - это в случае, если предполагается дальнейшая обработка выборов пользователя в AskParam в скрипте.

#114:  Author: goraLocation: Иваново PostPosted: Fri Dec 19, 2014 14:11
    —
MVV
Каждый введенный параметр будет сохраняться в файле. Список в файле будет ограничен 10-20 значений. Параметры в списке будут перемещаться в зависимости от того какой из них использовался последним и самые старые будут "выдавливаться" из списка.
Этот список наиболее частоиспользуемых параметров будет использоваться при следующем запуске AskParam в виде строки параметров /t.
Вот поэтому мне нужно получить именно параметр из AskParam, а запуск приложения с полученным параметром я смогу и сам организовать в скрипте.

Добавлено спустя 7 минут:

MVV wrote:
в чем сложность вызова cmd для записи в файл?

Приходится перекодировать файл с кириллицей

#115:  Author: MVVLocation: Ростов-Дон PostPosted: Fri Dec 19, 2014 14:29
    —
А если в файле будет UTF-16 без маркера?
Code:
AskParam.exe /pt /s0 /w cmd /u /c "echo %1>d:\1.txt"

#116:  Author: goraLocation: Иваново PostPosted: Fri Dec 19, 2014 14:57
    —
MVV
Спасибо, попробую. Правда переменную (%1) придется заключать в кавычки, а потом их в скрипте удалять. И какие еще фокусы могут преподнести спец символы, которые могут быть введены пользователем, будучи посланные в CMD...

#117:  Author: goraLocation: Иваново PostPosted: Fri Dec 19, 2014 20:58
    —
MVV
От спец символов не спасают даже кавычки. Sad
CMD, в данном случае, не обеспечивают надежную запись в файл.
Жду Вашего решения о модификации утилиты.

#118:  Author: MVVLocation: Ростов-Дон PostPosted: Fri Dec 19, 2014 21:08
    —
Такая функция совершенно не вписывается в концепцию.
Уверен, можно найти внешнюю утилиту для записи строки в файл.

#119:  Author: goraLocation: Иваново PostPosted: Sun Dec 21, 2014 12:25
    —
MVV
Зайдем с другого конца...
Сейчас введенный параметр передается запускаемому приложения в виде переменной %1 и т.д.. Можно ли создать поименованный (например, var1) дубликат этой переменной и чтобы эта переменная была видна из запускаемого приложения (скрипта)?

#120:  Author: MVVLocation: Ростов-Дон PostPosted: Sun Dec 21, 2014 14:02
    —
Вообще, %1 - это не переменная, это подстановочный знак. А переменные могут быть только окружения, но они видны только в дочерних процессах. Файл - самый простой способ передать что-то запускающему скрипту.

#121:  Author: goraLocation: Иваново PostPosted: Sun Dec 21, 2014 14:48
    —
MVV wrote:
но они видны только в дочерних процессах.

Code:
AskParam[.exe] [<params>] [<command to execute>]

Дык command to execute это дочерний процесс? Вот в нем я и хочу увидеть переменную var1

Добавлено спустя 3 минуты:

MVV wrote:
самый простой способ передать что-то запускающему скрипту.

Я не про запускающий скрипт, а про запускаемый пишу.

#122:  Author: MVVLocation: Ростов-Дон PostPosted: Sun Dec 21, 2014 15:45
    —
Это можно.

AskParam Beta 124

При вводе очередного параметра создаёт переменную окружения вида AskParam1, AskParam2 и т.д.

Увидеть их все можно, например, так:
Code:
AskParam.exe /p1 /p2 /p3 cmd.exe /k set ask

#123:  Author: goraLocation: Иваново PostPosted: Sun Dec 21, 2014 16:39
    —
MVV
Спасибо, то, что надо! Smile

Теперь по интерфейсу:

1 Края иконки рваные. Причем на панели задач иконка нормально смотрится.
2 Однострочный текст в /p мне кажется сильно ограничивает пользователя. Он не сможет изложить все нужное в одну строку.
3 Ширина по умолчанию великовата и сделать окно меньше у меня не получилось.
4 Квадратные углы кнопок на любителя.

#124:  Author: MVVLocation: Ростов-Дон PostPosted: Sun Dec 21, 2014 22:28
    —
По иконке вопросы к Microsoft, я её беру в ресурсах системы.
Квадратные кнопки, потому что я не парюсь по поводу тем оформления и пользуюсь классической темой. Можешь положить рядом с файлом файл манифеста)
Ещё никто не жаловался, что одной строки мало.
А длину увеличивал специально, т.к. текст (пути) не умещался целиком. И не думаю, что при современных разрешениях экрана это много.

#125:  Author: goraLocation: Иваново PostPosted: Mon Dec 22, 2014 14:37
    —
MVV wrote:
По иконке вопросы к Microsoft, я её беру в ресурсах системы.


1 Иконка тоже взята из системы, но края не рваные.

Code:
GUISetIcon('user32.dll', 2 + 100)




MVV wrote:
длину увеличивал специально, т.к. текст (пути) не умещался целиком.


2 А по такому принципу сделать сложно? Тогда и окно можно поменьше иметь, и ширину списка достаточно большую.

#126:  Author: MVVLocation: Ростов-Дон PostPosted: Mon Dec 22, 2014 19:19
    —
Quote:
Иконка тоже взята из системы, но края не рваные.

Я загружал через LoadIcon с параметром IDI_QUESTION, а там нельзя задавать размер. Через LoadImage можно загрузить оба размера.
Quote:
А по такому принципу сделать сложно? Тогда и окно можно поменьше иметь, и ширину списка достаточно большую.

Это не облегчит редактирование длинного пути в поле ввода.

#127:  Author: yozhik PostPosted: Fri Jan 02, 2015 23:06
    —
Quote:
Однострочный текст в /p мне кажется сильно ограничивает пользователя.

Присоединяюсь. Мне очень не хватает возможности писать в несколько строк. Приходится лепить сокращения, которые потом плохо читаются.
Quote:
Ещё никто не жаловался, что одной строки мало.

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

#128:  Author: MVVLocation: Ростов-Дон PostPosted: Sat Jan 03, 2015 02:06
    —
Допилил пробную версию.

AskParam Beta 128

Ширину окна можно задать меньше начальной с помощью /v, но не менее 256. Также добавил возможность изменять высоту окна, как мышью, так и параметром /vширина:высота. Высоту ограничил двойным размером, если мало, говорите, прибавлю ещё. С автоматической подгонкой окна под размер приглашения возиться не буду, стандартные элементы окна такой информации не предоставляют.
Теперь приглашение многострочное, автоматом переносится по словам, \n в строке приглашения заменяется на разрыв строки.
И иконку теперь гружу явно из user32.dll, оба размера, так что должна смотреться красивенько.

#129:  Author: Skif_off PostPosted: Sat Jan 03, 2015 02:30
    —
MVV
Для чего нужна х64 версия? Только на случай, когда требуется обойти редирект?

#130:  Author: goraLocation: Иваново PostPosted: Sat Jan 03, 2015 09:16
    —
MVV
Спасибо за подарок под елкой!
Проверил, вроде все обещанное утилита выполняет.

Есть еще небольшая хотелка...
Сейчас утилита:
1 переданную ей строку t\"%ProgramFiles%" раскрывает и отображает переменную как c:\Program Files
2 введенную в окно ввода строку %ProgramFiles% раскрывает и передает в переменную AskParam1 как c:\Program Files

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

Хотелось бы:
1 пусть она не раскрывает переменные из t\ в поле ввода
2 пусть она не раскрывает переменные из окна ввода при передаче их в переменную AskParam1
3 пусть она передает строку запускаемому приложению как и ранее для сохранения обратной совместимости.

#131:  Author: GGS PostPosted: Sat Jan 03, 2015 11:10
    —
MVV
При использовании ключа /v нет центровки окна (фиксируется левый верхний угол). Так задумано или можно исправить?

#132:  Author: MVVLocation: Ростов-Дон PostPosted: Sat Jan 03, 2015 18:21
    —
Skif_off,
На тот случай, когда из 64-битного тотала запускается 64-битное приложение, чтобы не было между ними 32-битной прослойки со своим окружением, в том числе и с редиректом.

gora,
Наоборот раскрытие было сделано специально, т.к. это было нужно людям. И потом, какой смысл их сохранять?

GGS,
Я вообще там центровку не выполняю, позиция окна (а это как раз координаты верхнего левого угла) просто не меняется. Попробую добавить перемещение окна при изменении размера.

#133:  Author: goraLocation: Иваново PostPosted: Sat Jan 03, 2015 18:40
    —
MVV wrote:
какой смысл их сохранять?

Вообще я это описал, ну да ладно, нет, так нет.

#134:  Author: FlasherLocation: Москва PostPosted: Sat Jan 03, 2015 19:02
    —
MVV
Можешь добавить число строк для параметров /t:N со скроллбаром и переносом? Для работы с буферным текстом нужно.

#135:  Author: MVVLocation: Ростов-Дон PostPosted: Sat Jan 03, 2015 20:22
    —
Flasher,
Многострочное поле ввода? Это уже сложнее, тем более, комбобокс не поддерживает такое.

gora,
Увидел, причина понятна. Добавлю флаг для отключения раскрытия переменных окружения в тексте запроса.

gora wrote:
2 введенную в окно ввода строку %ProgramFiles% раскрывает и передает в переменную AskParam1 как c:\Program Files

Это, кстати, неверно. В переменную AskParam1 записывается в точности то, что было введено в поле. А вот при подстановке в строку параметров запускаемой программы вместо %1 или %%AskParam1%% да, раскрывает, но там раскрытие выполняется для всей строки параметров целиком, и переделка повлияет на гибкость.

AskParam Beta 134

Добавил ключ /e- для отключения раскрытия переменных при отображении в поле ввода. Но на выходе раскрытие будет всё равно. Единственный вариант получить текст целиком - читать его вручную из переменной AskParam1.


Last edited by MVV on Sat Jan 03, 2015 20:43; edited 2 times in total

#136:  Author: FlasherLocation: Москва PostPosted: Sat Jan 03, 2015 20:29
    —
MVV wrote:
Многострочное поле ввода?
Да.

А что касается нераскрытия, то в чём проблема? Есть же учетверённый знак процента, описанный в первом посте.

#137:  Author: MVVLocation: Ростов-Дон PostPosted: Sat Jan 03, 2015 20:45
    —
Flasher,
Ещё не понял, что значит "добавить число строк". Ограничение на число вводимых строк?

Quote:
А что касается нераскрытия, то в чём проблема? Есть же учетверённый знак процента, описанный в первом посте.

Саму переменную надо раскрыть, а переменные внутри неё - не надо. Если пишешь %%AskParam1%%, получаешь C:\Program Files, если пишешь %%%%AskParam1%%%%, получаешь %%C:\Program Files%%, а надо получить %ProgramFiles%.

#138:  Author: FlasherLocation: Москва PostPosted: Sat Jan 03, 2015 20:51
    —
MVV wrote:
Ограничение на число вводимых строк?
Не вводимых, а отображаемых (сомкнутых полей ввода, если так можно выразиться).
MVV wrote:
Саму переменную надо раскрыть
Разве?

И как можно ещё понять описанное?
MVV wrote:
А если этот символ % нужно передать запускаемому приложению, то нужно написать его 4 раза (тотал передаст половину символов %, а потом AskPAram еще в 2 раза сократит их число при анализе строки).


Last edited by Flasher on Sat Jan 03, 2015 20:56; edited 1 time in total

#139:  Author: goraLocation: Иваново PostPosted: Sat Jan 03, 2015 20:55
    —
MVV wrote:
Добавил ключ /e- для отключения раскрытия переменных при отображении в поле ввода

Не получается, переменные, при просмотре в поле ввода, раскрыты.
MVV wrote:
получить текст целиком - читать его вручную из переменной AskParam1

Скриптом переменная AskParam1 читается нормально, спасибо.

Окно справки стало очень широким.
Иконка от окна справки на панели задач, видимо, подставляется системой, а не из утилиты.

#140:  Author: MVVLocation: Ростов-Дон PostPosted: Sat Jan 03, 2015 20:57
    —
Quote:
Разве?

Если ты о переменной AskParam1, то да.
Но я посмотрел сейчас ещё раз, действительно, %%AskParam1%% (или учетверённый вариант, если с кнопки) передаёт введённый текст без искажения (мне показалось, что переменные раскрываются рекурсивно).

#141:  Author: FlasherLocation: Москва PostPosted: Sat Jan 03, 2015 21:01
    —
MVV wrote:
мне показалось, что переменные раскрываются рекурсивно
Нет, конечно. Это уже сто лет в обед как известно. Wink

#142:  Author: MVVLocation: Ростов-Дон PostPosted: Sat Jan 03, 2015 21:03
    —
Может, кому-то и известно, но в описании функции ExpandEnvironmentStrings не сказано, как она обрабатывает переменные внутри переменных.

gora wrote:
Не получается, переменные, при просмотре в поле ввода, раскрыты.

Ты точно /e- указываешь до соответствующего /t?
Code:
... /e- /t"%ProgramFiles%" /e ...

gora wrote:
Скриптом переменная AskParam1 читается нормально, спасибо.

Это радует.

gora wrote:
Окно справки стало очень широким.
Иконка от окна справки на панели задач, видимо, подставляется системой, а не из утилиты.

За ширину я не отвечаю, это обычный MessageBox. И потом, у меня оно совсем не широкое, текст автоматически переносится по словам. А иконка берётся из ресурсов, её там просто нет, и не вижу в ней смысла.


Last edited by MVV on Sat Jan 03, 2015 21:31; edited 2 times in total

#143:  Author: goraLocation: Иваново PostPosted: Sat Jan 03, 2015 21:27
    —
MVV wrote:
точно /e- указываешь до соответствующего /t?

Про это не было сказано, но попробовал и так, все равно раскрываются.
Code:
AskParam.exe /c"Запуск с параметрами (в окне консоли)" /c(1)Запустить /c(2)Отмена /q"^" /e- /t"%ProgramFiles%\IEPro" /t"%ProgramFiles%" /t"-InstallPath=^C:\Program Files\\IEPro^" /t"-InstallPath=^%ProgramFiles%\IEPro^" /t"/?" /t"/help" /t" " /t"-force -guiless" /t"-force -auto" /e /w /v350:163 /p"Имя файла:   AskParam.exe\n\nПараметры запуска:" C:\Users\gora\AppData\Local\Temp\_tmp\WriteLine.vbs
MVV wrote:
За ширину я не отвечаю, это обычный MessageBox

Но ведь переводы строки добавить в строку примера в справке Вы же можете, вот она и не будет в пол экрана окно разворачивать. Wink

#144:  Author: MVVLocation: Ростов-Дон PostPosted: Sat Jan 03, 2015 21:33
    —
Quote:
Про это не было сказано, но попробовал и так, все равно раскрываются.

А из какой среды выполняешь команду? А то когда я запускаю это из комстроки тотала или из консоли, AskParam получает уже раскрытую переменную, и закрыть её обратно при всём желании не в состоянии. Very Happy
gora wrote:
Но ведь переводы строки добавить в строку примера в справке Вы же можете, вот она и не будет в пол экрана окно разворачивать. Wink

Не могу назвать это окно слишком широким. Пробелов в строке куча, система прекрасно справляется с переносом строк, Windows 7 делает такие окна заметно уже, чем Windows XP. Что же у тебя за система такая, если окно широкое?
И потом, может быть непонятно, что это одна строка. Мне очень неприятно смотреть на разрывы строк там, где их не должно быть, где ширина окна позволяет другую ширину текстовой строки, да и при копировании по Ctrl+C будут ненужные разрывы строк.

#145:  Author: goraLocation: Иваново PostPosted: Sat Jan 03, 2015 21:42
    —
MVV wrote:
А из какой среды выполняешь команду?

Запускаю из VBS скрипта. Там переменные не открыты.
Строка кода в предыдущем посте взята из окна WSS.Popup запущенного из этого vbs скрипта и как видно переменные там не раскрыты.
MVV wrote:
Windows 7 делает такие окна куда уже

У меня win7
https://dl.dropboxusercontent.com/u/35142695/askparhelp.png

#146:  Author: MVVLocation: Ростов-Дон PostPosted: Sat Jan 03, 2015 23:41
    —
Попробуй выполнить из консоли или комстроки тотала:
Code:
AskParam.exe /t"%program""files%" /p /e- /t"%program""files%" /p cmd /k set ask

Лишние кавычки не дадут консоли/тоталу раскрыть переменные, но не помешают AskParam. В первом запросе у меня в поле отображается C:\Program Files (x86), а во втором, когда режим раскрытия отключён - %programfiles%. И на выходе всё чётко.

gora wrote:
У меня win7
https://dl.dropboxusercontent.com/u/35142695/askparhelp.png
Забавно, интересно теперь, как система выбирает ширину окна. Very Happy

#147:  Author: FlasherLocation: Москва PostPosted: Sun Jan 04, 2015 00:33
    —
MVV wrote:
И иконку теперь гружу явно из user32.dll, оба размера, так что должна смотреться красивенько.
Смотрится ужасно, т.к. масштабируется из-за несоответствия формата. Советую поставить 125 в Single Icon из msctf.dll.

#148:  Author: MVVLocation: Ростов-Дон PostPosted: Sun Jan 04, 2015 00:53
    —
Flasher,
Иконки из user32.dll содержат размеры на любой вкус, так что не вижу смысла использовать нестандартную библиотеку. И потом, это где она у тебя масштабируется? Стандартные размеры иконок - 16х16 маленькие (заголовок окна и традиционные панели задач) и 32х32 большие (новомодные панели задач).

Quote:
Советую поставить 125 в Single Icon из msctf.dll.

Вообще не вижу иконки с номером 125 в этой библиотеке. Их там всего штук 30. А папка Single Icon - это лишь сваленные в кучу отдельные части всех иконок, и по этим номерам никто к ним не обращается. Реальный номер твоей иконки - 13, а идентификатор ресурса - 400. Но чётче она выглядеть не станет, т.к. содержит те же размеры (даже меньше).

#149:  Author: goraLocation: Иваново PostPosted: Sun Jan 04, 2015 01:02
    —
MVV wrote:
Попробуй

Попробовал,результаты подтверждаю, но я не совсем понял к чему это!? Это предлагается как решение проблемы?
Мне такой вариант не подходит. У меня параметры /t формируются динамически из ini файла в котором могут быть строки как с переменными окружения, так и локальными переменными существующими в определенных программах. Там могут быть %1, %%T и т.п. ini файл тоже динамически меняется, а не заранее сформированный. Как предполагается различать все виды переменных и как расставлять эти спасительные кавычки? Скриптом? Нет, это не потяну.

Добавлено спустя 4 минуты:

MVV wrote:
Лишние кавычки не дадут консоли/тоталу раскрыть переменные,

У меня нет ни консоли, ни ТС, у меня vbs скрипт и в нем переменные не раскрываются.

#150:  Author: FlasherLocation: Москва PostPosted: Sun Jan 04, 2015 01:14
    —
MVV
Ты ошибаешься. Размеры не меньше. В твоём варианте иконка, в Single Icon идущая под номерами 289-297, 2078-2081 (№ 24 идент. 0023), имеет всего 3 размера, а та, что я указал - 1496-1504 (№ 324 идент. 0210) имеет 4, включая эти 3.
Также есть подозрение, что твоя иконка берётся из 8-битного набора, а не 32-х. У предлагаемой мной в наличии только 32-х, поэтому больше шансов на более красивое исполнение. Ты покажи, что получится, а мы оценим.


Last edited by Flasher on Sun Jan 04, 2015 02:26; edited 1 time in total

#151:  Author: MVVLocation: Ростов-Дон PostPosted: Sun Jan 04, 2015 01:50
    —
gora,
Это было подтверждение работоспособности опции. Лишние кавычки расставлять нигде не нужно, они нужны лишь для чистоты эксперимента. И чистый эксперимент показал, что когда на вход приходит строка с переменной окружения, на выход она поступает в нетронутом виде после /e- и в раскрытом после /e+.
И потом, ты же сам говорил, что скрипт читает переменные AskParam1 нормально?

Flasher,
К иконкам из кода обращаются по номерам ресурсов, которые Resource Hacker отображает в группе Icon Group. Твоя иконка с индексом 400 (которая стала нормально выглядеть только в Windows 7 - прощай, совместимость с Windows 2000-XP) имеет 4 размера: 16, 24, 32, 48, все в true color. Иконка с идентификатором 102 из user32.dll (которая была и в Windows 2000) имеет те же 4 размера, плюс те же 4 же с другими цветностями, итого 8. Т.е. ничуть не хуже. И прощаться с совместимостью из-за каких-то нечетких контуров я не намерен.


Last edited by MVV on Sun Jan 04, 2015 02:08; edited 1 time in total

#152:  Author: goraLocation: Иваново PostPosted: Sun Jan 04, 2015 01:58
    —
MVV
Спасибо. Ключ /e пока больше не переделывайте. Тараканы у меня, буду думать.
MVV wrote:
из-за каких-то нечетких контуров

Сейчас края у иконки ровные, иконку менять необходимости нет.

#153:  Author: FlasherLocation: Москва PostPosted: Sun Jan 04, 2015 02:08
    —
MVV wrote:
Твоя иконка с индексом 400
Я же написал какой индекс у неё в shell32. См. внимательно.
MVV wrote:
Иконка с идентификатором 102 из user32.dll (которая была и в Windows 2000) имеет те же 4 размера, плюс теже 4 же с другими цветностями, итого 8. Т.е. ничуть не хуже.
Не вижу такого идентификатора. Твоя иконка - 24. И не вижу там 4-х размеров, там их 3.
MVV wrote:
И прощаться с совместимостью из-за каких-то нечетких контуров я ненамерен.
Тогда лучше её вообще убрать. Или найти замену с квадратной формой, т.к. в строке заголовка нестандартный размер 22. И, похоже, тянется не 24х24, а 32х32. В общем, ни в какие ворота.

gora wrote:
Сейчас края у иконки ровные


#154:  Author: MVVLocation: Ростов-Дон PostPosted: Sun Jan 04, 2015 02:32
    —
Quote:
Я же написал какой индекс у неё в shell32. См. внимательно.

Ты упоминал лишь msctf.dll, про shell32 я вижу впервые. Но с shell32.dll у Windows вообще беда, в них иконки так легко меняются от версии к версии...
Quote:
Не вижу такого идентификатора. Твоя иконка - 24. И не вижу там 4-х размеров, там их 3.

У меня Windows 7x64 SP1, а у тебя? Вот мои иконки.
Quote:
Тогда лучше её вообще убрать. Или найти замену с квадратной формой, т.к. в строке заголовка нестандартный размер 22. И, похоже, тянется не 24х24, а 32х32. В общем, ни в какие ворота.

Я сразу подозревал, что у тебя масштабирование шрифтов включено. Оно вообще коробит все иконки, и даже кнопки с крестиками-минусиками криво смотрятся. У меня высота иконки в заголовке в аккурат 16 пикселей.

#155:  Author: FlasherLocation: Москва PostPosted: Sun Jan 04, 2015 03:04
    —
MVV wrote:
Ты упоминал лишь msctf.dll, про shell32 я вижу впервые.
Тут я писал только про shell32.
MVV wrote:
У меня Windows 7x64 SP1, а у тебя?
Аналогично, только x32.



MVV wrote:
Я сразу подозревал, что у тебя масштабирование шрифтов включено.
Да, так и есть, выставлен режим "Средний - 125%", формат монитора диктует. Если уменьшить заголовок до размера 20, то иконка встаёт как следует, но панель задач и элементы управления окном уменьшаются до неприличия. Sad

#156:  Author: MVVLocation: Ростов-Дон PostPosted: Sun Jan 04, 2015 03:33
    —
Flasher wrote:
Тут я писал только про shell32.

Только забыл уточнить этот факт. А мысли я не читаю. Very Happy
Flasher wrote:
Аналогично.

С трудом понял по этому твоему плагину, и то чисто сравнив со своим, что есть что, где индекс одиночной иконки, а где - идентификатор ресурса.
Flasher wrote:
Да, так и есть, выставлен режим "Средний - 125%", формат монитора диктует. Если уменьшить заголовок до размера 20, то иконка встаёт как следует, но панель задач и элементы управления окном уменьшаются до неприличия. Sad

Я обычно с такими мониторами (на рабочем ноутбуке) просто уменьшаю разрешение экрана. Монитор масштабирует куда аккуратнее, чем система, а размытые очертания даже приятнее глазу.

#157:  Author: FlasherLocation: Москва PostPosted: Sun Jan 04, 2015 03:47
    —
MVV wrote:
С трудом понял по этому твоему плагину
Какому из? Первый - ICLView, второй PEViewer (в нём жёлтым маркером отмечен идентификатор). Ты такими не пользуешься? Shocked
MVV wrote:
Я обычно с такими мониторами (на рабочем ноутбуке) просто уменьшаю разрешение экрана.
В моём случае это совсем не вариант.

#158:  Author: MVVLocation: Ростов-Дон PostPosted: Sun Jan 04, 2015 13:56
    —
Flasher wrote:
Какому из? Первый - ICLView, второй PEViewer (в нём жёлтым маркером отмечен идентификатор). Ты такими не пользуешься? Shocked

Я использую FileInfo, а для ресурсов, как правило, Resource Hacker (открываю через F4Menu). Но это уже несколько не по теме.

#159:  Author: yozhik PostPosted: Mon Jan 05, 2015 11:36
    —
Выравнивание по центру экрана при изменении размеров работает хорошо (Win8.1x32). /p в несколько строк – красота! – давно мечтал. Спасибо.

#160:  Author: MVVLocation: Ростов-Дон PostPosted: Mon Jan 05, 2015 18:33
    —
Спасибо за отчёт. Smile
С выравниванием я особо не заморачивался, просто при изменении размера одновременно сдвигаю окно на половину разницы в размерах.

#161: вопрос Author: SolarW PostPosted: Thu May 14, 2015 06:31
    —
Здравствуйте коллеги.
Просидел полночи но так и не понял как решить вроде как элементарную задачу.
Есть cmd-файл следующего содержимого:
Code:
@echo on
AskParam.exe /c"Введите параметры" /p"Введите параметр 1" /p"Введите  параметр 2" /w cmd /c "inst.cmd %1 %2"

Что я не учитываю из-за чего не запускается inst.cmd с полученными параметрами?

Буду премного признательным за ответ.

#162:  Author: MVVLocation: Ростов-Дон PostPosted: Thu May 14, 2015 14:00
    —
В командных файлах % необходимо удваивать. А так получается, что передаются первые два параметра самого файла.

#163:  Author: SolarW PostPosted: Thu May 14, 2015 15:10
    —
Т.е.
Code:
@echo on
AskParam.exe /c"Введите параметры" /p"Введите параметр 1" /p"Введите  параметр 2" /w cmd /c "inst.cmd %%1 %%2"

или
Quote:
@echo on
AskParam.exe /c"Введите параметры" /p"Введите параметр 1" /p"Введите параметр 2" /w cmd /c "inst.cmd %%1% %%2%"


Добавлено спустя 1 час 8 минут:

Большое спасибо за наводку, сработал первый вариант.

#164:  Author: yozhik PostPosted: Wed Jun 24, 2015 11:08
    —
Честное слово, я сам ни на секунду не верю подобным заявлениям. Но наш сисадмин в этом плане человек-скала (ибо умён и никого не слушает). Мне бы только файл скачать... Если что-то cможете сделать – спасибо большое. Не сможете – прошу прощения за беспокойство.
SOPHOS wrote:
Content blocked
While trying to retrieve the URL:
http://wincmd.ru/files/4323306/AskParam_1.0.6.134.7z
The content is blocked due to the following condition:
The item you have requested is infected by a virus. It will not be downloaded.
Report:
TR/Rogue.6656.64

P.S. Хотел под more или под спойлер убрать, но первого нет, а второй у меня, судя по всему, отключен. Может быть вы как-то по другому это делаете, ни в FAQ, ни в BBCode я инструкций не нашёл. Так что, прошу прощения за некрасивую простыню.

#165:  Author: AvadaLocation: Россия, Саратов PostPosted: Wed Jun 24, 2015 12:02
    —
yozhik
Инструкция по спойлерам — здесь. И в отношении AskParam действительно со стороны некоторых АВ может быть ругань на вирус.

#166:  Author: MVVLocation: Ростов-Дон PostPosted: Wed Jun 24, 2015 12:36
    —
Ох ни хрена ж себе, сразу 12 детектов, да они оборзели! Shocked
Даже представить сложно, на что ругаются, абсолютно ничего системного не делает утилита, сплошные окошки и создание нового процесса...
Хотя, там 7 детектов с абсолютно одинаковым названием - сразу видно, кто у кого базы берет. А на 64-битную вообще ни одного! Laughing

yozhik,
Отправил тебе сообщение с BASE64-закодированным архивом, пусть попробует обнаружить. Very Happy
Кстати, можно было сразу в личку о таком попросить. Smile

#167:  Author: goraLocation: Иваново PostPosted: Wed Jun 24, 2015 13:27
    —
MVV wrote:
Ох ни хрена ж себе, сразу 12 детектов, да они оборзели!

А у меня аж 13 ругаются, но... Когда то я добавил в утилиту манифест по Вашему совету, так вот на этот измененный файл ругаются только 4.

#168:  Author: yozhik PostPosted: Wed Jun 24, 2015 23:06
    —
Всех от души благодарю. Теперь всё хорошо: спойлер разучили, файл на месте (т.е. у меня). Кстати, десктопный Каспер на него даже не пикнул, так что можно теперь будет с коллегами поделиться. Это только параноидальный серверный файрволл ругался.

#169:  Author: Skif_off PostPosted: Thu Jun 25, 2015 18:08
    —
Файл манифеста этот?

#170:  Author: goraLocation: Иваново PostPosted: Thu Jun 25, 2015 18:39
    —
Skif_off wrote:
Файл манифеста этот?

Если это вопрос ко мне, то нет.
Манифест добавлен непосредственно в утилиту и делалось это Restorator-ом (там есть такая опция).

#171:  Author: MVVLocation: Ростов-Дон PostPosted: Thu Jun 25, 2015 20:44
    —
Внедрять манифесты нет необходимости, достаточно просто положить рядом с правильным именем: для AskParam.exe файл должен называться AskParam.exe.manifest. Но на результат анализа дурных антивирусов это не повлияет.

#172:  Author: goraLocation: Иваново PostPosted: Thu Jun 25, 2015 20:50
    —
MVV wrote:
Но на результат анализа дурных антивирусов это не повлияет
Тем не менее:
https://www.virustotal.com/ru/file/3f7384b979d8896dd418ec4749fe72c11f368c97a9e534455bcbcb409ca94c09/analysis/

#173:  Author: MVVLocation: Ростов-Дон PostPosted: Thu Jun 25, 2015 21:18
    —
Я говорил о манифесте рядом с экзешником. Манифест в ресурсах - другое дело, спасает от тупых антивирусов, которые оценивают ресурсы.

#174:  Author: AvadaLocation: Россия, Саратов PostPosted: Wed Jul 08, 2015 10:07
    —
MVV
Я, конечно, всё понимаю, но такие результаты по бете 1.0.6.134 (той, которая сейчас представлена на wincmd.ru) — это, мягко говоря, некоторый перебор. При том, что в предыдущей бете близко ничего подобного не было.
На оффоруме выложена ссылка на бету 144, где всё снова вполне прилично. Надо бы обновить ссылку и информацию и на wincmd.ru.

#175:  Author: MVVLocation: Ростов-Дон PostPosted: Wed Jul 08, 2015 11:23
    —
Во, блин, ещё больше стало... До жути интересно, какая именно сигнатура этим тупым антивирусам попалась в коде.

А бету бы ещё потестировать. Кстати, о ней. По просьбам трудящихся добавил возможность задавать конкретные имена переменных окружения, в которые помещать ответы на вопросы (раньше все ответы помещались в переменные с именами AskParam1, AskParam2 и т.д.).

AskParam beta 144

Например, при таком запросе ответ на вопрос про any Option будет помещён в переменную my_opt, а не в AskParam1:
Code:
AskParam /t"Option1" /p(e)"my_opt: any Option" ...

Можно комбинировать вырезание подсказок и задание имени переменной окружения:
Code:
AskParam /t"Моя любимая опция: Option1" /p(he)"my_opt: any Option" ...

#176:  Author: goraLocation: Иваново PostPosted: Wed Jul 08, 2015 13:58
    —
MVV wrote:
А бету бы ещё потестировать

Отвалилось преобразование \n в "перевод строки".

134


144


Как я понял обратная совместимость со старыми версиями имеется? Т.е. по умолчанию те самые переменные без их объявления так и будут называться AskParam1, AskParam2 и т.д. ?


Last edited by gora on Wed Jul 08, 2015 20:29; edited 1 time in total

#177:  Author: MVVLocation: Ростов-Дон PostPosted: Wed Jul 08, 2015 17:19
    —
Quote:
Как я понял обратная совместимость со старыми версиями имеется? Т.е. по умолчанию те самые переменные без их объявления так и будут называться AskParam1, AskParam2 и т.д. ?

Да, если модификатор (e) не задан, ответ будет занесён в переменную AskParamX, где X - порядковый номер вопроса.

Quote:
Отвалилось преобразование /n в "перевод строки".

Вообще про это не помню. Нашел баг, но когда сломалось, не представляю. И заменяется на разрыв строки у меня сейчас ^n, а не \n или /n.

AskParam beta 146

#178:  Author: goraLocation: Иваново PostPosted: Wed Jul 08, 2015 18:17
    —
MVV wrote:
но когда сломалось, не представляю.

Сломалось в версии 144. В 134 все работало и работало именно со слешем.
Я извиняюсь, слеш там обратный работал в версии 134.
В версии 146 \n не заработал. Проверил и ^n, тоже не работает.
Желательно вернуть именно \n, т.к. это позволит оперативно сравнивать Вашу утилиту разных версий, не внося правки в основной скрипт.

#179:  Author: MVVLocation: Ростов-Дон PostPosted: Wed Jul 08, 2015 18:31
    —
Пробую в 146, вижу огромное окно с запросом из 2 строк:
Code:
AskParam.exe /v333:444 /p"test^nwow"

А ^n я скорее всего сделал из-за проблем с путями, в которых вполне может встречаться \n (даже припоминаю ситуацию, когда увидел в окне только кусок запроса).

#180:  Author: goraLocation: Иваново PostPosted: Wed Jul 08, 2015 18:45
    —
MVV
Вот реальная строка запуска из скрипта:
Code:
AskParam.exe /c"Запуск с параметрами" /c(1)Запустить /c(2)Отмена /q"^" /e- /t"проба пера" /t"/?" /t"-force" /t"-forse" /e /w /v350:163 /p"Имя файла:   AskParam.exe\n\nПараметры запуска:" "C:\Users\gora\AppData\Local\Temp\_tmp\rad59145.tmp.vbs"

Эта строка работает в версии 134.
Она не работает в версии 144 (скриншот приводил выше)
В версии 146 ни чего не поменялось, все как в версии 144.
Замена \n на ^n ни чего не поменяла.

#181:  Author: MVVLocation: Ростов-Дон PostPosted: Wed Jul 08, 2015 19:44
    —
Дык у тебя же /q"^" всё портит. Very Happy
Сначала ^ у тебя заменяются на ", а потом, естественно, "n не заменяются на разрывы строк. Если тебе /q не нужен, лучше вообще его не указывать. Приоритеты менять местами смысла не вижу (кавычки по-моему важнее), лучше поменять символ кавычки в окне справки на `.

#182:  Author: goraLocation: Иваново PostPosted: Wed Jul 08, 2015 19:57
    —
MVV wrote:
Дык у тебя же /q"^" всё портит.

Но в 134 не портит!
Ладно, потестить я потестил, "прокукарекал, а там хоть не рассветай".
Меня и 134 устраивает. Smile

#183:  Author: MVVLocation: Ростов-Дон PostPosted: Wed Jul 08, 2015 22:21
    —
Quote:
Но в 134 не портит!

Дык там же было \n, а в /q у тебя крышка, символы разные, потому и не портит.

#184:  Author: goraLocation: Иваново PostPosted: Wed Jul 08, 2015 23:07
    —
MVV wrote:
Дык там же было \n

Я все понял...
Но принцип обратной совместимости "не позволяет" делать в новой версии такие изменения, которые приводят к неработоспособности скрипта\программы вполне себе нормально работающего с предыдущей версией утилиты.
В любом случае о таких изменениях (если они были жизненно необходимы) нужно жирно писать в самом начале анонса новой версии.
ИМХО

#185:  Author: MVVLocation: Ростов-Дон PostPosted: Thu Jul 09, 2015 13:33
    —
Изначально то была бета-версия, и в релизе ни слова не было сказано об этой функции. Но то, что я забыл об этом изменении, как и о функции вообще, меня самого не очень радует.

#186:  Author: yozhik PostPosted: Wed Aug 12, 2015 18:05
    —
Справка по параметрам в первом посте старовата, много чего добавилось с тех пор (причём, имхо, существенного). Я сделал себе памятку по текущей версии. Труд ни на что не претендует, но, поскольку выполнен, пусть криво-косо, то может пригодиться кому-либо, пока не появится что-либо посерьёзней.
 Памятка по параметрам AskParam 1.0.6.146

#187:  Author: MVVLocation: Ростов-Дон PostPosted: Wed Aug 12, 2015 18:52
    —
Благодарность за труд! Пригодится при написании Readme, а пока добавил ссылку в первый пост.

#188:  Author: HA3APET PostPosted: Tue Jan 05, 2016 03:28
    —
MVV
А можно пример для
net use Z: https://webdav.ru <password> /user:<login> /persistent:yes

то есть, чтобы можно было ввести:
Букву
Адрес
Логин
Пароль

#189:  Author: MVVLocation: Ростов-Дон PostPosted: Tue Jan 05, 2016 12:08
    —
Можно, но в нём нет абсолютно ничего выдающегося:
Code:
AskParam.exe /tZ /p"Буква:" /t"https://webdav.ru" /p"Адрес:" /p"Логин:" /h /p"Пароль:" net use %1: "%2" "%4" /user:%3 /persistent:yes

При желании можно и для /persistent добавить комбобокс с выбором. Это можно сделать несколькими способами, выбрал более интересный:
Code:
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

Если это будет с кнопки в тотале, то либо всю строку надо загнать в поле команды, либо удвоить символы % в той её части, что будет вынесена в поле параметров.

#190:  Author: FlasherLocation: Москва PostPosted: Tue Jan 05, 2016 12:46
    —
Только весь список дисков как в cm_NetConnect не добавить (максимум - 10):
Code:
/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


Last edited by Flasher on Tue Jan 05, 2016 14:21; edited 3 times in total

#191:  Author: MVVLocation: Ростов-Дон PostPosted: Tue Jan 05, 2016 13:18
    —
Добавить все можно разве что перечислением. Или из скрипта/батника, тогда можно добавлять только свободные буквы.

#192:  Author: FlasherLocation: Москва PostPosted: Tue Jan 05, 2016 13:20
    —
Но даже свободных окажется, увы, больше.
А что даст перечисление? Как с ним работать?

#193:  Author: MVVLocation: Ростов-Дон PostPosted: Tue Jan 05, 2016 13:34
    —
Дык ничего не мешает добавить в перечисление все буквы (кстати, чтобы сократить запись, можно перечислять буквы без кавычек: /tZ: /tY: и т.п.). А что даст...
Перечисление в режиме списка не даст выбрать занятую букву, при этом выбирать можно будет стрелками вверх/вниз и алфавитными клавишами. Перечисление в обычном режиме - просто подсказка о доступных буквах и возможность выбора стрелками в любой раскладке или ввести любую букву вручную.

#194:  Author: FlasherLocation: Москва PostPosted: Tue Jan 05, 2016 14:24
    —
Тьфу ты, я на ползунок-то не смотрю. Поправил.
MVV wrote:
Перечисление в режиме списка не даст выбрать занятую букву
Каким образом? Я только так смог:
Code:
'=============== Путь к 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"

И что-то я про режимы не понял. И там и там можно выбирать стрелками? Напиши примеры лучше.

#195:  Author: MVVLocation: Ростов-Дон PostPosted: Wed Jan 06, 2016 01:10
    —
Quote:
Каким образом? Я только так смог:

Ну вроде мысль верна, я и подразумевал то, что ты можешь заранее зафиксировать набор, из которого можно сделать выбор, и запретить ввод иного значения. А каким алгоритмом формировать комстроку - уже дело десятое.
Quote:
И что-то я про режимы не понял. И там и там можно выбирать стрелками? Напиши примеры лучше.

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

#196:  Author: FlasherLocation: Москва PostPosted: Wed Jan 06, 2016 01:20
    —
MVV
Т.е. /rl - это и есть режим списка, а /rd - обычный? Ты про это писал?

#197:  Author: MVVLocation: Ростов-Дон PostPosted: Wed Jan 06, 2016 15:00
    —
Да. Режим списка, где нельзя ввести произвольное значение, и обычный режим, где можно. Названия они берут от соответствующих стилей CBS_DROPDOWN и CBS_DROPDOWNLIST.

#198:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Fri Jan 22, 2016 12:44
    —
2MVV
Сделал такую кнопку:
 Hidden text
Вроде бы работает, но есть вопросы "косметического" свойства.
1. Нельзя ли сделать, чтобы имя псевдопеременной (до двоеточия) было обрамлено %? А то сейчас первая строчка выглядит как
Code:
ALLUSERSPROFILE: C:\ProgramData
вместо
Code:
%ALLUSERSPROFILE%: C:\ProgramData
2. Почему некоторые переменные не разворачиваются в путь (при этом переход работает нормально)? Например,
Code:
$COMMON_DESKTOPDIRECTORY: %$COMMON_DESKTOPDIRECTORY%
вместо
Code:
$COMMON_DESKTOPDIRECTORY: c:\Users\Public\Desktop
3. Изменение первого ключа /t на /u не меняет ничего. Разумно было бы, чтобы никакого умолчательного значения не предлагалось. Поэтому мне как раз нужно /t, а диалог ведет себя так, как если бы было /u. Нужно, чтобы нажатие ОК не вызывало бы никакого действия и чтобы юзверь обязательно открыл список и выбрал один пункт. Как этого добиться?

#199:  Author: MVVLocation: Ростов-Дон PostPosted: Fri Jan 22, 2016 12:59
    —
Quote:
1. Нельзя ли сделать, чтобы имя псевдопеременной (до двоеточия) было обрамлено %?

Можно отключить парсинг переменных с помощью ключа /e-. Но получишь другую крайность (до и после двоеточия будут имена переменных). Или найди себе юникодный символ, похожий на знак %, чтобы обмануть расширятель в нужном месте. Есть забавная альтернатива: ℅. Smile

Quote:
2. Почему некоторые переменные не разворачиваются в путь (при этом переход работает нормально)? Например,

Тут всё просто: это внутренние псевдо-переменные тотала, система о них ничего не знает.
Quote:
3. Изменение первого ключа /t на /u не меняет ничего. Разумно было бы, чтобы никакого умолчательного значения не предлагалось.

По умолчанию выбранным является первый элемент, а /u лишь позволяет явно задать, какой элемент нужно выбрать. А добиться пустого значения легко: сделай текущей пустую строку с помощью /u"".

#200:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Fri Jan 22, 2016 13:33
    —
Quote:
найди себе юникодный символ, похожий на знак %, чтобы обмануть расширятель в нужном месте. Есть забавная альтернатива: ℅
Этот символ заменяется на ?. Win7Eng64

#201:  Author: MVVLocation: Ростов-Дон PostPosted: Fri Jan 22, 2016 13:37
    —
Я вписал этот символ в кнопку и без проблем вижу в AskParam, тоже Win7x64. Но скорее плохо в нём то, что нельзя скопировать имя переменной со знаками % для последующего использования.

#202:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Mon Feb 08, 2016 12:46
    —
2MVV
1. Создать два батника 1.bat и 2.bat произвольного содержания и поместить их, скажем, в c:\Test;
2. Создать кнопку
Code:
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\AskParam\AskParam64.exe
/u1 /t2 /p "c:\Test\%%1.bat"
C:\utils\totalcmd\WCMICONS.DLL
Batches


-1
Выполнить батник не получается, вне зависимости от числа знаков % перед 1.
3. Меняем кнопку
Code:
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\AskParam\AskParam64.exe
/u1 /t2 /p cmd /k "c:\Test\%%1.bat"
C:\utils\totalcmd\WCMICONS.DLL
Batches


-1
Все работает! Отсюда первый вопрос (не слишком важный) - почему? Дело в расширении "bat"? Но ведь оно относится ОСью к исполняемым, наряду с "ехе", "com" и "cmd".
4. Опять меняем кнопку
Code:
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\AskParam\AskParam64.exe
/u1 /t2 /p cmd /k "%%COMMANDER_DRIVE%%\Test\%%1.bat"
C:\utils\totalcmd\WCMICONS.DLL
Batches


-1
(Понятное дело, Тотал установлен на C). Сообщение "System cannot find the path specified". Разве AskParam не разворачивает %COMMANDER_что_угодно% перед передачей интерпретатору? В этом второй вопрос (хотя ответ, видимо, содержится здесь).

Третий вопрос (самый важный) - как вообще выполнить батник через AskParam с использованием переменных окружения?

#203:  Author: MVVLocation: Ростов-Дон PostPosted: Mon Feb 08, 2016 15:09
    —
Quote:
Выполнить батник не получается, вне зависимости от числа знаков % перед 1.

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

Вахмурка wrote:
Все работает! Отсюда первый вопрос (не слишком важный) - почему? Дело в расширении "bat"? Но ведь оно относится ОСью к исполняемым, наряду с "ехе", "com" и "cmd".

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

Вахмурка wrote:
Сообщение "System cannot find the path specified". Разве AskParam не разворачивает %COMMANDER_что_угодно% перед передачей интерпретатору? В этом второй вопрос (хотя ответ, видимо, содержится здесь).

Здесь COMMANDER_DRIVE должна нормально разворачиваться, т.к. это не псевдопеременная. Открой cmd из тотала и выполни set c, все переменные там - это реальные переменные окружения, которые AskParam может разворачивать, в отличие от переменных типа $DESKTOP, о которых известно только тоталу (все псевдопеременные в тотале начинаются с $).
Однако в силу того, что путь к батнику здесь указан в строке параметров запускаемой программы, а AskParam раскрывает переменные окружения после подстановки своих параметров, знаки процента вокруг переменной окружения надо дополнительно удваивать: /u1 /t2 /p cmd /k "%%%%COMMANDER_DRIVE%%%%\Test\%%1.bat" (половину знаков % при анализе строки параметров скушает тотал, вторую половину - AskParam).

Вахмурка wrote:
Третий вопрос (самый важный) - как вообще выполнить батник через AskParam с использованием переменных окружения?

Вариантов могу назвать два:
1. Сама система при вызове батника автоматически вызывает для него интерпретатор cmd, т.к. батник не является исполнимым файлом, поэтому вполне можно использовать вариант с явным вызовом cmd. Но тогда важно не забыть правильно передать аргументы батника: cmd /c ""c:\Test\%%1.bat" arguments" (дополнительные внешние кавычки вокруг всей командной строки после /c обязательны, т.к. cmd в силу своей природной тупости очень любит их оттуда снимать).
2. Так как AskParam автоматически определяет переменные окружения с ответами, их можно использовать в пути к вызываемой программе вместо подстановочных параметров: c:\Test\%AskParam1%.bat.

#204:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Sun Feb 14, 2016 13:59
    —
А сложно будет переделать программу, чтобы опции представлялись в виде не dropdown list, а набора radiobutton'ов? Результат, понятно, тот же. Плюсы: 1) экономия щелчка на раскрытие списка: 2) наглядность. Минус я вижу только один - изменение размеров окна в зависимости от числа пунктов. Будет также и ограничение на максимальное число оных. Но все же - программно это сложно обеспечить?

Добавлено
Забыл сказать очевидное - режим задается ключом, скажем, /o. По умолчанию - текущее состояние

#205:  Author: MVVLocation: Ростов-Дон PostPosted: Sun Feb 14, 2016 20:56
    —
Желания заморачиваться с радиокнопками никакого. Текущие элементы размещены статически в шаблоне диалога, а переменное число радиокнопок придётся создавать вручную, при этом заботиться о том, чтобы их размер был нормальным при каждом масштабе шрифтов.

#206:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Tue Feb 16, 2016 21:27
    —
Еще один запрос по "косметике": если сейчас вставить символ табуляции до двоеточия в режиме /p(h), то он (символ табуляции) игнорируется, превращаясь в пробел. Нельзя ли добавить ключ, чтобы в dropdown list'е комментарий (до двоеточия) и параметр (после) выравнивались по столбцам:
Code:
Comment 1                 : Key1
Long Comment 2            : Key2
Very Long Comment 3       : Key3
То есть что-то типа ключа \t в меню Тотала. Если трудно сделать, чтобы нужное число табуляций вставлялось автоматически, то эту задачу можно переложить на широкие плечи юзверя. Синтаксис, например, такой:
Code:
/t(3)Подсказка: Ключ
- вставить 3 табуляции и т.д.

#207:  Author: Dimsok PostPosted: Mon May 16, 2016 20:37
    —
А какой-нибудь подобной программы, только независимой от Тотала, никто не знает?

#208:  Author: FlasherLocation: Москва PostPosted: Mon May 16, 2016 20:47
    —
Из первого поста: "Требования: Windows 2000 и выше". Про зависимость от ТС ни слова.

#209:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Mon May 16, 2016 21:33
    —
Подтверждаю. Я ее в том числе и независимо использую. Если нет параметров %P и %N и прочих, то Тотал вообще ни при чем...

#210:  Author: Dimsok PostPosted: Tue May 17, 2016 00:34
    —
Quote:
Я ее в том числе и независимо использую

А пример можно привести?

#211:  Author: FlasherLocation: Москва PostPosted: Tue May 17, 2016 00:38
    —
Dimsok
Всё то же самое, разницы никакой, кроме того, что внутренние переменные ТС уже по понятным причинам не подставить.

#212:  Author: Dimsok PostPosted: Tue May 17, 2016 00:52
    —
Flasher, ежеминутно форум мониторишь что ли? Отрабатываешь свой аватар Very Happy .
Я не конкретно про синтаксис, а про то, где именно он использует askparam.
Если без привязки к Коммандеру, это батники писать что ли.

#213:  Author: FlasherLocation: Москва PostPosted: Tue May 17, 2016 01:03
    —
Dimsok
Если бы ежеминутно, то разрыв в 3 часа тут вряд ли бы наблюдался. Я только вернулся домой.

Не очень понимаю умысла. Если сам не знаешь, что тебе нужно от программы в иной среде, то чего было сим вопросом задаваться?

#214:  Author: Dimsok PostPosted: Tue May 17, 2016 01:06
    —
Вдруг какое-то необычайное применение отыщется. Вот и спрашиваю, для каких ещё задач он её использует в отрыве от Total Commander. Хотя одно уже нашёл. В одной проге для просмотра сат. тв можно запускать разные каналы через ком. строку. Буду askparam каналы переключать Laughing .

#215:  Author: FlasherLocation: Москва PostPosted: Tue May 17, 2016 01:14
    —
Ничего тут необычного. Запуск той или иной программы (с разными опциями/режимами) с ярлыка/кнопки тулбара/панели быстрого запуска (стандартного, PowerPro, TLB и пр.), выполнение задач со стационарными часто используемыми файлами.

#216:  Author: MVVLocation: Ростов-Дон PostPosted: Tue May 17, 2016 01:54
    —
Вообще, конечно, пользоваться AskParam можно и совсем без тотала, но это, наверное, довольно тоскливо, т.к. основное (мне кажется) её применение - это выполнять какие-то действия с файлами (на худой конец, с папками, но главным образом это выбранные в панели элементы). Можно, конечно, закидать рабочий стол или таскбар ярлыками для запуска разных программ с разными опциями, или вообще насоздавать ярлыков для выбора запускаемых программ из большого списка, но без возможности передачи этим программам файлов это кажется сильно ограниченным. Мне лично уже давно стали противны программы, которые не принимают параметры, и в которых нужный файл можно открыть только через унылый диалог выбора файла (уныние становится совсем унылым, если в этом диалоге выбора нет поля для вставки пути к файлу из буфера обмена).

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

#217:  Author: Dimsok PostPosted: Tue May 17, 2016 02:04
    —
Quote:
основное (мне кажется) её применение - это выполнять какие-то действия с файлами

Иногда бывает нужно просто передать параметр консольной программе для вывода в ней нужной информации. Без файловых операций. Мне как раз это понадобилось, вот я и спросил насчёт самостоятельного решения, потому что участие тут коммандера показалось весьма сторонним, только в качестве носителя кнопки. И я подумал, что вместо того, чтобы загромождать и без того не голую панель Тотала, лучше поместить соответствующую ссылку куда-нибудь на панель быстрого запуска.

#218:  Author: FlasherLocation: Москва PostPosted: Tue May 17, 2016 02:19
    —
MVV
Да хорош, нагнал тут скуки. Smile Выбор бэкграунда/слайдшоу/скринсервера, выбор прокси, выбор процесса через скрипт для убийства или инф-ции, отправка почты разным людям, обновление программ по списку, скриншот нужных сайтов в свою папку или на Раб. стол с возможностью открытия, ленты новостей из опр. источников, общие сетевые задачи автоматизации с файлами сервера/сетевого диска/расшаренных каталогов, подключение/монтирование сетевых/виртуальных дисков, logoff юзеров по списку, конвертер величин (тут на любителя), задачи для дисков (форматирование, скрытие и пр.), резервное копирование особых групп файлов/каталогов, открытие ссылки из буфера в разных браузерах, скачивание по буферной ссылке в заданную группу каталогов, скачивание/копирование указанного числа последних файлов, загрузка на FTP/облака, выбор подключения по сети и т.д. и т.п. без какой либо привязи к ТС.
Про программы же, не понимающие параметры, тут вообще говорить не имеет смысла.


Last edited by Flasher on Tue May 17, 2016 02:49; edited 1 time in total

#219:  Author: Dimsok PostPosted: Tue May 17, 2016 02:44
    —
В программе есть ограничение на длину команды? Вот кнопка:

Code:
%COMMANDER_PATH%\Plugins\exe\AskParam.exe /w /c"Change encoding" /t"ASCII" /t"CP855" /t"CP866" /t"KOI8-R" /t"KOI8-RU" /t"WINDOWS-1250" /t"WINDOWS-1251" /t"WINDOWS-1252" /t"WINDOWS-1253" /t"WINDOWS-1254" /t"WINDOWS-1255" /t"WINDOWS-1256" /t"WINDOWS-1257" /t"WINDOWS-874" /t"UTF-8" /u"UTF-16LE" /t"UTF-32" /t"ISO-8859-1" /t"ISO-8859-2" /t"ISO-8859-5" /t"ISO-8859-7" /t"ISO-8859-9" /t"GB18030" /t"GB2312" /t"BIG-5" /t"EUC-JP" /t"SHIFT-JIS" /t"EUC-KR" /t"GBK" /t"TIS620" /t"US-ASCII" /p"Input encoding" /t"ASCII" /t"CP855" /t"CP866" /t"KOI8-R" /t"KOI8-RU" /t"WINDOWS-1250" /t"WINDOWS-1251" /t"WINDOWS-1252" /t"WINDOWS-1253" /t"WINDOWS-1254" /t"WINDOWS-1255" /t"WINDOWS-1256" /t"WINDOWS-1257" /t"WINDOWS-874" /u"UTF-8" /t"UTF-16LE" /t"UTF-32" /t"ISO-8859-1" /t"ISO-8859-2" /t"ISO-8859-5" /t"ISO-8859-7" /t"ISO-8859-9" /t"GB18030" /t"GB2312" /t"BIG-5" /t"EUC-JP" /t"SHIFT-JIS" /t"EUC-KR" /t"GBK" /t"TIS620" /t"US-ASCII" /c(1)"Convert" /c(2)"No, thanks" /p"Output encoding" /s"0" %ComSpec%
/c "for /f "usebackq delims=" %%%%# in (`type "%WF"`) do "%%%%COMMANDER_PATH%%%%\Plugins\exe\iconv.exe" -c -f %%1 -t %%2 "%P%%%%#" > "%T%%%%~n# (%%2).%E"


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

#220:  Author: FlasherLocation: Москва PostPosted: Tue May 17, 2016 09:19
    —
Dimsok
Кнопка? Ой ли. Я вижу только две строки из неё. Ограничение тут больше действует не на длину команды, а на длину поля, о чём много раз на форуме говорилось. У комстроки же своё ограничение, о чём в свою очередь можно прочесть в справке.
И судя по кнопке, нет ни намёка на попытку перенести добрую часть в поле "Параметры" и уровнять длины полей.
Хотя я не понимаю, зачем вообще держать весь список кодировок, это по меньшей мере неудобно.

#221:  Author: Dimsok PostPosted: Tue May 17, 2016 11:14
    —
C комстрокой использую, чтобы было возможно работать со всеми выделенными файлами. А про большое кол-во кодировок, это я после того, как в сети нашёл список самых распространённых. К тому же постарался их упорядочить, пусть и не в алфавитном порядке. Когда работаешь с файлами субтитров, и не такие кодировки встречаются.

#222:  Author: FlasherLocation: Москва PostPosted: Tue May 17, 2016 11:38
    —
При чём тут работа с выделенными файлами (это и так видно)? Я тебе пишу про ограничение, которое комстроки не касается. Скопипасть в вызванную из ТС консоль cmd этот код и увидишь.
 Hidden text


Last edited by Flasher on Tue May 17, 2016 12:12; edited 1 time in total

#223:  Author: MVVLocation: Ростов-Дон PostPosted: Tue May 17, 2016 11:47
    —
Flasher wrote:
Да хорош, нагнал тут скуки. Smile ...

Отличное портфолио для AskParam. Very Happy

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

В самой AskParam сейчас нет ограничений на длину входной строки параметров (но они есть в системе), есть лишь ограничения на длину выходной строки (32K+) и на число запрашиваемых параметров (сейчас это 256 штук, под которые выделен буфер в 32768 символов).

Flasher wrote:
Скопипасть в вызванную из ТС консоль cmd этот код и увидишь.

Я бы тут в последнем /t что-нибудь поменял, чтобы было видно, что добавились все. Smile

#224:  Author: FlasherLocation: Москва PostPosted: Tue May 17, 2016 12:08
    —
MVV wrote:
Отличное портфолио для AskParam.
Я (почти) старался. Wink
MVV wrote:
32K+
32K-1.
MVV wrote:
сейчас это 256 штук
Что выше крыши. Без подсказок не обойдёшься.
MVV wrote:
Я бы тут в последнем /t что-нибудь поменял
ОК. Как скажешь. Сперва тоже хотел исправить.

#225:  Author: MVVLocation: Ростов-Дон PostPosted: Tue May 17, 2016 12:20
    —
Flasher wrote:
Я (почти) старался. Wink

Я аж поместил ссылку на твой (почти) труд в первый пост. Smile

Flasher wrote:
32K-1.

Не совсем угадал. Буфер под параметры - да, 32768 символов (здесь я не оригинален), но между параметрами ещё есть нулевые символы.


AskParam 152

Выложил последнюю версию, добавил пару проверок на выход за границы массивов.

#226:  Author: FlasherLocation: Москва PostPosted: Tue May 17, 2016 12:27
    —
MVV wrote:
Я аж поместил ссылку на твой (почти) труд в первый пост. Smile
Surprised Господь с тобой. На это мой пост не тянет. Там же вся тематика в стороне от ТС.
MVV wrote:
здесь я не оригинален
Набери в справке ТС '32767'.

#227:  Author: MVVLocation: Ростов-Дон PostPosted: Tue May 17, 2016 12:46
    —
Flasher wrote:
Набери в справке ТС '32767'.

Вообще, я говорил об ограничениях AskParam, а не тотала. Но у них, безусловно, есть что-то общее - ограничения системы.

#228:  Author: FlasherLocation: Москва PostPosted: Tue May 17, 2016 12:57
    —
Так не в отношении ТС написано, а именно что системы. В копилку "оригинальности" - 1, 2.
Но я понял о чём ты. Вот об этом:
CreateProcess function wrote:
The command line to be executed. The maximum length of this string is 32,768 characters, including the Unicode terminating null character. If lpApplicationName is NULL, the module name portion of lpCommandLine is limited to MAX_PATH characters.

#229:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Tue May 17, 2016 14:30
    —
Dimsok wrote:
А пример можно привести?
Легко:
 Примеры применения AskParam без TC
Имеющиеся псевдопеременные %COMMANDER_что-нибудь% легко заменяются на абсолютные пути.

2MVV
Среагируй, пожалуйста, на эту хотелку. А то "Доктор, меня все игнорируют!".

Добавлено
 Еще немного

#230:  Author: Dimsok PostPosted: Tue May 17, 2016 15:22
    —
Quote:
Легко

С учётом вашей привязанности к Powerpro, надо было догадаться, что будет на первом месте Very Happy

#231:  Author: FlasherLocation: Москва PostPosted: Tue May 17, 2016 15:27
    —
Вахмурка
2 строки мимо (%P%N и %P).

#232:  Author: MVVLocation: Ростов-Дон PostPosted: Tue May 17, 2016 15:29
    —
Вахмурка wrote:
Легко:

Rotate JPG Image принимает %P%N. Cool

Вахмурка wrote:
Среагируй, пожалуйста, на эту хотелку. А то "Доктор, меня все игнорируют!".

Да, это я как-то пропустил...
AskParam не трогает символы табуляции в комстроке. Тут либо они не передаются ей, либо комбобокс их отображает как пробелы. Можно, конечно, посмотреть, позволяет ли комбобокс отображать табы, но боюсь, ответ будет неутешительным. Вообще, это проблема - отобразить всё с выравниванием, т.к. сложно оценить ширину текста в системном контроле.

#233:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Tue May 17, 2016 15:48
    —
2MVV, Flasher
Да, пропустил. Но, как верно отметил автор, программа прежде всего (хотя не только) нацелена на дружбу с ТС. Так что существенная часть команд его параметры, разумеется, включает. Начал фильтровать - недофильтровал, начал дофильтровывать - зафильтровался. Но все равно счет 14:2 в мою пользу Wink

#234:  Author: FlasherLocation: Москва PostPosted: Tue May 17, 2016 16:06
    —
Вахмурка
Ты бы лучше вместо 14:2 сделал 12:0. Правда сказать, сиё больше тянет не на победу в матчевом счёте, а на показательное участие. Команды, прямо скажем, зачастую не блещут универсальностью, но это дело исключительно добровольное, конечно.

#235:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Tue May 17, 2016 16:10
    —
Универсальность никто не заказывал - просили примеры. А тебе, чем выискивать чужих блох, недурно было бы выложить свои собственные примеры, подающие восхищенному читателю образцы универсальности, и не в виде обобщенного абстрактного списка, а в виде строки параметров. Это будет полезно поголовно всем. Заодно и мне нос утрешь Wink

#236:  Author: FlasherLocation: Москва PostPosted: Tue May 17, 2016 16:23
    —
Никогда не искал цели в этом ключе кому-то утирать нос или соревноваться в количестве, иначе бы TCKB давно распухла от моих скриптов и кнопок. Коммент касался уместности 14:2. Провёл аналогию с победой. Слишком много стараний выводить подобный (во многом индивидуальный) список с минимальной пользой для вопрошающего, да и обратной отдачей. А победа - это когда полезность с потенциальным взращиванием КПД для окружающих видна невооружённым взгядом. Как-то так.

#237:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Tue May 17, 2016 17:02
    —
MVV wrote:
Вообще, это проблема - отобразить всё с выравниванием, т.к. сложно оценить ширину текста в системном контроле
А шрифтами можно управлять? Если да, то, во-первых, я бы предпочел увеличить кегль, а во-вторых, можно задать моноширинный шрифт - тогда и физическая длина строки должна соответствовать логической

#238:  Author: MVVLocation: Ростов-Дон PostPosted: Tue May 17, 2016 17:57
    —
Вахмурка wrote:
А шрифтами можно управлять? Если да, то, во-первых, я бы предпочел увеличить кегль, а во-вторых, можно задать моноширинный шрифт - тогда и физическая длина строки должна соответствовать логической

Да при желании управлять можно чем угодно, вопрос в том, насколько это удобно. Smile Послать сообщение с дескриптором шрифта можно любому окну, но размеры окон должны соответствовать выбираемому шрифту. Намучился я со шрифтами в NTLinks Maker...
Вообще, можно в Resource Hacker поменять шрифт диалога на Courier New, будет моноширинный.

#239:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Tue May 17, 2016 18:06
    —
Если ты считаешь, что выравнивание параметров повысит читабельность строки (которая при большой длине невелика), то будет здорово.
Из дополнительных косметических хотелок еще есть:
1) Скрывать параметр, полностью заменяя его комментарием;
2) Вставлять между комментарием и параметром не табуляции/пробелы, а видимые символы (при выравнивании), скажем, символы подчеркивания или точки. Сравни:
Code:
Коммантарий: Параметр
Коммантарий:          Параметр
Коммантарий:__________Параметр
Все - опционально, разумеется

#240:  Author: MVVLocation: Ростов-Дон PostPosted: Tue May 17, 2016 18:19
    —
Я как раз ничего не говорил про то, что я считаю. Конечно, красиво, когда всё выровнено, но в стандартных компонентах это не поддерживается (разве что в листбоксе можно задать позиции табстопов).

Выравнивать до или после - не такая и большая разница, а до ты можешь и сам. Smile
Code:
Коммантарий: Параметр
Коммантарий:          Параметр
Коммантарий:__________Параметр
Code:
Коммантарий: Параметр
Коммантарий          : Параметр
Коммантарий__________: Параметр

При откусывании комментария он откусывается с пробелами после двоеточия, так что их можно выставлять по вкусу. Добивать пробелами для выравнивания средствами AskParam у меня точно желания нет и не предвидится.

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

#241:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Tue May 17, 2016 18:25
    —
Понятно, что руками даже при пропорциональном шрифте можно экспериментальным путем добиться выравнивания. Речь шла именно о его автоматизации.
Про скрытие твоя позиция ясна. Но мне, например, не всегда важно знать сам параметр. Гораздо важно видеть его смысл в описании ("Неважно, какого цвета кошка. Важно, чтобы она ловила мышей"). Подчеркиваю: если был бы ключ, который вывод параметра в список отключает, я бы им широко пользовался. Заодно и о выравнивании по столбцам можно не заботиться Wink

#242:  Author: Dimsok PostPosted: Tue May 17, 2016 18:36
    —
Да, возможность полностью скрывать параметр была бы не лишней. Вот я сделал кнопку для конвертера субтитров, и для всего, что мне надо, можно было ограничиться лишь расширением в параметре, вроде "srt" или "ssa", а для формата sub пришлось ещё после двоеточия добавлять "16", потому как под этим форматом есть две разновидности. В итоге один пункт сильно выдаётся среди других. Мне то незачем знать, что посылается "16", важней, в какой формат это всё преобразует.

#243:  Author: cojoc PostPosted: Tue May 17, 2016 18:46
    —
Avast постоянно блокирует AskParam, приходится каждый раз его добавлять в исключения.

#244:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Tue May 17, 2016 19:05
    —
cojoc wrote:
Avast постоянно блокирует AskParam, приходится каждый раз его добавлять в исключения.
У меня он стал орать при попытке скачивания. Только что запустил AskParam - Avast молчит. Какие версии того и другого? У меня 1.0.6.152 и 11.2.2262 соответственно

#245:  Author: AvadaLocation: Россия, Саратов PostPosted: Tue May 17, 2016 19:39
    —
Вахмурка
У меня тот же антивирус на нескольких машинах. И, да, раньше приходилось добавлять в исключения. Но последняя версия тихо скачалась, и потом никаких блокировок не было. И дело, полагаю, не столько в версии самого Avast! (у меня AIS 9.0.21.531), сколько в его текущих базах.

#246:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Tue May 17, 2016 19:42
    —
На всякий случай "Версия определений вирусов 160517-2". Нумерация версий у нас разная. У меня - бесплатная. У тебя, видимо, нет Smile

#247:  Author: AvadaLocation: Россия, Саратов PostPosted: Tue May 17, 2016 22:36
    —
Вахмурка
Да, у меня лицензионный Avast Internet Security. Определения те же.

#248:  Author: MVVLocation: Ростов-Дон PostPosted: Wed May 18, 2016 01:19
    —
Параноик тупорылый этот Аваст... эта его эвристическая сигнатура ни о чём... Посчитал импорты, посмотрел, что нету иконки, и, типа, "ну подозрительно"...

#249:  Author: FlasherLocation: Москва PostPosted: Wed May 18, 2016 11:52
    —
Кроме Avast-a ещё Risin и Qihoo-360 ругаются на x32. Зато у x64 тишина.
Как хорошо, что я себе весь этот хлам не ставлю, иначе бы никакого времени не хватило бегать с кляузами по авторам нормальных программ. Smile


Last edited by Flasher on Wed May 18, 2016 13:48; edited 1 time in total

#250:  Author: MVVLocation: Ростов-Дон PostPosted: Wed May 18, 2016 13:21
    —
Ну про Risin и Qihoo-360 я вообще молчу - первый раз слышу, что такие вообще существуют, поэтому и говорить тут не о чем. А Аваст - зверь известный, в том числе своей паранойей.

В любом случае, об отсутствии каких-либо серьёзных оснований для подозрений у всей тройки главным образом говорит отсутствие детектов для 64-битной версии - тупо кривые сигнатуры для 32-битного кода (сигнатур для 32-битного кода на порядки больше, поэтому и ложных детектов больше) или косяки эвристик.

https://www.virustotal.com/ru/file/0a737407769e63399d19f730da4057c6fbf7b21c3e12b2ad78fc40a60b18ca6d/analysis/
https://www.virustotal.com/ru/file/fbc36d969484f121f2c027e0cd9505891f428b72f8e25fe3698366b7d2d91bcb/analysis/

#251:  Author: Dimsok PostPosted: Wed Oct 05, 2016 16:35
    —
Надо подставлять переменную в пути приложения. Параметры у них одинаковые, и так для тридцати с лишним приложений. Пробую:

/c"Rename roms" /t"Nintendo: NES" /t"Super Nintendo: SNES" /t"Sega MD: Gen" /p(h)"Select system" /c(1)"Start" /c(2)"No, thnanks" /s"2" "%%COMMANDER_PATH%\Plugins\exe\games\GoodTools\Good%%1.exe" rename inplace

Но так не проходит. Есть какой-нибудь рабочий вариант? Может, через cmd.

#252:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Wed Oct 05, 2016 17:50
    —
Кто куда не проходит? Как говорил проф. Преображенский: "Простите, кто на ком стоял?". Что пишет? Что именно происходит?
Не дожидаясь всезнающего автора, от себя могу поделиться опытом работы с AskParam, пригодным, по крайней мере, на первых порах:
1) Начать с самого примитивного варианта, то есть всего двух опций;
2) Никаких тебе /c, /s и прочей косметики. Заработает - добавляй по одной украшалки и улучшалки, не забывая тестить;
3) Экспериментировать с кавычками и процентами. Иногда приходилось добавлять и тех и других не по два, а по три и даже четыре символа;
4) Взять за основу какую-нибудь заведомо работающую команду (их в ветке навалом), похожую на твою, и заменять то, что есть, на то, что нужно. Постоянное тестирование выявит место ошибки

#253:  Author: MVVLocation: Ростов-Дон PostPosted: Wed Oct 05, 2016 17:52
    —
Выбираемые значения нельзя подставлять в путь к запускаемой программе через %1, %2 и т.д. Однако можно подставлять их туда в виде переменных окружения, которые AskParam создаёт для всех ответов: AskParam1, AskParam2 и т.д.:
Code:
AskParam.exe /p"Введите путь к запускаемой программе:" "%AskParam1%"


Ну и конечно можно запускать через промежуточные утилиты, тогда можно и %1 использовать. Например, с помощью exec.exe из комплекта Virtual Panel или банального cmd.exe:
Code:
AskParam.exe /p"Введите путь к запускаемой программе:" exec.exe "%1"

Code:
AskParam.exe /p"Введите путь к запускаемой программе:" /s0 cmd.exe /c "%1"

#254:  Author: Dimsok PostPosted: Wed Oct 05, 2016 18:59
    —
Сделал вот такую кнопочку:
Code:
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Plugins\exe\AskParam.exe /w /c"Rename roms" /t"Nintendo: NES" /t"Super Nintendo: SNES" /t"Sega MD: Gen" /t"Gameboy: GBx" /t"Gameboy adv: GBA" /t"Sega MS: SMS" /t"Atary 2600: 2600" /t"Atari 5200: 5200" /t"Atari 7800: 7800" /t"Nintendo 64: N64" /t"Pc Engine: PCE" /t"Commodore 64: PSID" /t"Coleco: Col" /t"Gamegear: GG" /t"NG Pocket: NGPx" /t"Wonderswan: Wsx" /t"MSX 1: MSX1" /t"MSX 2: MSX2" /t"Intelvision: INTV" /t"Vectrex:Vect" /t"Cpc:Cpc" /t"Jaguar:Jag" /t"Lynx:Lynx" /t"Watara SV:SV" /t"Virtual boy:VBoy" /t"Oric:Oric" /t"Thompson:M05"  /p(h)"Select system" /c(1)"Rename" /c(2)"No, thanks" /s"2" %ComSpec%
/c "c:\Program Files\Total Commander\Plugins\exe\games\GoodTools\Good%%1" rename inplace nodb
C:\WINDOWS\System32\shell32.dll,24
Rename console roms for selected systems


-1

#255:  Author: addhaloka PostPosted: Thu Oct 06, 2016 05:27
    —
MVV wrote:
осмотрел, что нету иконки, и, типа, "ну подозрительно"...

 Hidden text

#256:  Author: MVVLocation: Ростов-Дон PostPosted: Thu Oct 06, 2016 11:34
    —
addhaloka,
 OFF

#257:  Author: addhaloka PostPosted: Thu Oct 06, 2016 12:01
    —
MVV
 OFF

#258:  Author: Dimsok PostPosted: Sat Oct 22, 2016 13:39
    —
Почему-то некоторые кнопки не сразу срабатывают. Появляется окно консольное и пропадает. Иногда со второго или третьего раза команда запускается, и ещё заметил, что чаще, когда медленнее нажимать. Это что, аргументы не успевают передаваться? Вот к примеру с кнопкой для изменения разрешения картинок с ImageMagick:

Code:
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Plugins\exe\AskParam.exe /c"Resize pictures" /u"48x48" /t"64x64" /t"128x128" /t"400x400" /t"1024x768" /t"1280x1024" /c(1)"I like it" /c(2)"No, thanks" /p"Choose size" /u"yes:" /t"no:!" /c(1)"Resize" /c(2)"No, thanks" /p(h)"Preserve proportions?" /s"2" %ComSpec%
/c "for /f "usebackq delims=" %%%%# in (`type "%WF"`) do "%%%%COMMANDER_PATH%%%%\Plugins\wlx\SVGView\ImageMagick_x32\convert.exe" -resize %%1%%2 "%P%%%%#" "%t%%%%~n#.%E"
WCMICONS.dll,56
Resize pictures (Imagemagick)


-1

#259:  Author: MVVLocation: Ростов-Дон PostPosted: Sat Oct 22, 2016 20:45
    —
Не пойму, что именно наблюдается. Аргументы не могут "не успеть передаться", т.к. все аргументы передаются в API-функцию непосредственно перед её запуском. А что мне тут видится наиболее вероятным - что пока cmd.exe запускается, тотал уже радостно удаляет временный список файлов, т.к. запущенная им AskParam отработала... Для лечения таких проблем в AskParam есть ключ /w.

#260:  Author: Dimsok PostPosted: Mon Nov 28, 2016 12:55
    —
Что-то не пойму, а собственные параметры TC не могут передаваться?

/c"Pack files to the single arch" /u"7z" /t"zip" /c(1)"Next" /c(2)"No, thanks" /p"Choose type" /u"%T" /t"%P" /c(1)"Pack" /c(2)"No, thanks" /p"In which panel?" /s"2" /w %ComSpec%
/c "for /f "usebackq delims=" %%%%# in (`type "%WF"`) do "c:\Program Files\7-Zip\7z.exe" a -mx=9 "%%2%%%%~n#.%%1" "%%%%#"

Тут от %T толку никакого нет, всё равно в текущую панель всё делается.

Добавлено спустя 15 минут:

И под использование с vbs никак не приспособить? К примеру:

Code:
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Plugins\exe\AskParam.exe /c"Pack files" /u"7z" /t"zip" /c(1)"Pack" /c(2)"No, thanks" /p"Choose type" /s"2"
"c:\Program Files\Total Commander\Utils\WHS\multiarch uni.vbs" %WL "%T" %%1 "" -mx=9
WCMICONS.dll,30
Multiarch


-1


Добавлено спустя 31 минуту:

И ещё я так понял, при передаче через комстроку для всех команд, идущих после & надо заново назначать параметры askparam?

/c"Rearchivate files" /u"7z" /t"zip" /c(1)"Rearch" /c(2)"No, thanks" /p"Choose type" /s"2" /w %ComSpec%
/c "for /f "usebackq delims=" %%%%# in (`type "%WF"`) do "c:\Program Files\7-Zip\7z.exe" x "%%%%#" -o%%%%tmp%%%%\Rearch && "c:\Program Files\7-Zip\7z.exe" a -mx=9 "%T%%%%~n#.%%1" %%%%tmp%%%%\Rearch\* && rd /s /q %%%%tmp%%%%\Rearch

Срабатывает только первая часть, архивации не происходит.

#261:  Author: MVVLocation: Ростов-Дон PostPosted: Mon Nov 28, 2016 17:20
    —
Quote:
/c"Pack files to the single arch" /u"7z" /t"zip" /c(1)"Next" /c(2)"No, thanks" /p"Choose type" /u"%T" /t"%P" /c(1)"Pack" /c(2)"No, thanks" /p"In which panel?" /s"2" /w %ComSpec%

Хотя тут явно не указано, в каком поле кнопки это написано (поле команды или поле параметров), такой микс не будет корректно работать ни в каком из них. В поле команды допустимо использование переменных окружения, но недопустимы %-параметры, в то время как в поле параметров наоборот допустимы %-параметры, но недопустимы переменные окружения (хотя их можно попытаться передать запускаемому приложению в двойных %, если оно умеет их раскрывать).

Quote:
И под использование с vbs никак не приспособить? К примеру:

Попробуй запускать VBS правильно, указывая программу, которая будет его запускать:
Code:
"%%SystemRoot%%\System32\wscript.exe" "c:\Program Files\Total Commander\Utils\WHS\multiarch uni.vbs" %WL "%T" %%1 "" -mx=9


Quote:
И ещё я так понял, при передаче через комстроку для всех команд, идущих после & надо заново назначать параметры askparam?

AskParam запускает 1 процесс, который получает заданную комстроку, по всей длине которой раскрываются %-параметры, и наследует окружение с переменными AskParamX. Остальное - проблемы запускаемого процесса. В данном случае это cmd.exe, поэтому скорее всего в его параметрах что-то указано не так. Попробуй запустить cmd.exe с такими параметрами явно, с кнопки без AskParam. Что-то мне подсказывает, что не всё в ней хорошо:
Code:
Команда: C:\Windows\system32\cmd.exe
Параметры: /c "for /f "usebackq delims=" %%# in (`type "%WF"`) do "c:\Program Files\7-Zip\7z.exe" x "%%#" -o%%tmp%%\Rearch && "c:\Program Files\7-Zip\7z.exe" a -mx=9 "%T%%~n#.7z" %%tmp%%\Rearch\* && rd /s /q %%tmp%%\Rearch

#262:  Author: FlasherLocation: Москва PostPosted: Mon Nov 28, 2016 22:09
    —
MVV wrote:
Попробуй запускать VBS правильно, указывая программу
Кто тебе сказал, что не указывать программу неправильно? vbs - это прежде всего исполняемый файл. Ничего там указывать не нужно.
Code:
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Plugins\exe\AskParam.exe /c"Pack files" /u"7z" /t"zip" /c(1)"Pack" /c(2)"No, thanks" /p"Choose type" /s"2" "%COMMANDER_PATH%\Utils\WHS\multiarch uni.vbs"
%WL "%T" %%1 "" -mx9
WCMICONS.dll,30
Multiarch
Всё должно работать без вопросов.

#263:  Author: MVVLocation: Ростов-Дон PostPosted: Mon Nov 28, 2016 23:48
    —
Quote:
vbs - это прежде всего исполняемый файл.

Это неверно. VBS - это документ, для исполнения которого необходима ассоциированная с ним исполняемая программа.
Quote:
Всё должно работать без вопросов.

Возможно. Я не использую VBS, поэтому не знаю точно.

#264:  Author: FlasherLocation: Москва PostPosted: Tue Nov 29, 2016 00:53
    —
MVV wrote:
Это неверно. VBS - это документ, для исполнения которого необходима ассоциированная с ним исполняемая программа.
Как раз - верно (1, 2, 3 и т.д.). Тут нет противоречия. Исполняемость никуда при этом не девается.

#265:  Author: Dimsok PostPosted: Tue Nov 29, 2016 01:43
    —
Quote:
Всё должно работать без вопросов.

Line:59
Char:1
Error:File not found.

#266:  Author: FlasherLocation: Москва PostPosted: Tue Nov 29, 2016 01:52
    —
Dimsok
AskParam тут при чём? Если есть какие-то проблемы со скриптом, то спрашивай по месту выкладки с учётом положений памятки.

#267:  Author: Dimsok PostPosted: Tue Nov 29, 2016 01:54
    —
Без askparam скрипт этот нормально же отрабатывает.

#268:  Author: FlasherLocation: Москва PostPosted: Tue Nov 29, 2016 01:59
    —
Если верить ошибке, то есть сомнения, что AP тут вообще может какую-то роль играть.

#269:  Author: Dimsok PostPosted: Thu Jan 26, 2017 11:46
    —
MVV
А нельзя добавить возможность назначать свою иконку вместо вопрос. знака?

#270:  Author: MVVLocation: Ростов-Дон PostPosted: Thu Jan 26, 2017 19:54
    —
Думаю, можно добавить...

#271:  Author: MVVLocation: Ростов-Дон PostPosted: Sat Feb 11, 2017 21:32
    —
Добавил ключ /i для установки иконки.

AskParam beta 160

#272:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Tue Apr 17, 2018 12:06
    —
Сооружал команду для перекодировки файлов через EmEditor. Получилось вот что:
 em-команда
Длина строки параметров около 1000 символов, то есть заведомо меньше, чем 32767. Тестил на пути с пробелами и кириллицей, а именно
Code:
f:\Users\Debath\AppData\Local\Temp\явдл фукдл е уц дел
Так вот, выходит, что при длинной строке параметров ее конец откусывается, и в программу передается
Code:
...Local\Te.%2
Стоит же удалить любой из ключей первого окна, как путь к файлу-результату входит полностью. Полная длина пути к файлу 70 символов, то есть далеко не 256.
У меня есть другая em-команда с AskParam, так там длина строки параметров 1968 символов - вдвое больше, чем здесь, и там все работает. Правда, там нет параметров типа %Р - только %1.
Насколько я понимаю, EmEditor у тебя установлен

#273:  Author: MVVLocation: Ростов-Дон PostPosted: Tue Apr 17, 2018 15:49
    —
У меня вроде работает:
Code:
[em_test]
cmd=%COMMANDER_PATH%\Addons\AskParam\AskParam64.exe
param=/c"Source Encoding" /u"Cyrillic (windows-1251): 1251" /t"System Default Encoding: 65536" /t"Unicode (UTF-16LE): 65537" /t"Unicode (UTF-16BE): 65538" /t"Unicode (UTF-8): 65001" /t"Unicode (UTF-7): 65000" /t"Binary (ASCII View): 65539" /t"Binary (Hexadecimal View): 65540" /t"Cyrillic (cp866): 866" /t"Cyrillic (iso-8859-5): 28595" /t"Cyrillic (koi8-r): 20866" /t"Cyrillic (koi8-ru): 21866" /t"Detects all encodings: 1048576" /t"Detects Unicode signature (BOM): 131072" /t"Detects UTF-8: 262144" /t"Detects HTML/XML Charset: 524288" /p(h) /c"Target Encoding" /u"Cyrillic (windows-1251): 1251" /t"System Default Encoding: 65536" /t"Unicode (UTF-16LE): 65537" /t"Unicode (UTF-16BE): 65538" /t"Unicode (UTF-8): 65001" /t"Unicode (UTF-7): 65000" /p(h) /cBOM /u"With Unicode signature (BOM): +" /t"Without Unicode signature (BOM): -" /p(h) "D:\Program Files\EmEditor\EmEditor.exe" "%P%O.%E" /nr /sp /cp %%1 /cps %%2 /ss%%3 /sa "%P%O.%%2"


AskParam получает такую комстроку (смотрю в ProcessHacker):
Code:
"D:\TOTALCMD\Addons\AskParam\AskParam64.exe" /cSource Encoding " /uCyrillic (windows-1251): 1251 " /tSystem Default Encoding: 65536 " /tUnicode (UTF-16LE): 65537 " /tUnicode (UTF-16BE): 65538 " /tUnicode (UTF-8): 65001 " /tUnicode (UTF-7): 65000 " /tBinary (ASCII View): 65539 " /tBinary (Hexadecimal View): 65540 " /tCyrillic (cp866): 866 " /tCyrillic (iso-8859-5): 28595 " /tCyrillic (koi8-r): 20866 " /tCyrillic (koi8-ru): 21866 " /tDetects all encodings: 1048576 " /tDetects Unicode signature (BOM): 131072 " /tDetects UTF-8: 262144 " /tDetects HTML/XML Charset: 524288 " /p(h  /c"Target Encoding" /u"Cyrillic (windows-1251): 1251" /t"System Default Encoding: 65536" /t"Unicode (UTF-16LE): 65537" /t"Unicode (UTF-16BE): 65538" /t"Unicode (UTF-8): 65001" /t"Unicode (UTF-7): 65000" /p(h) /cBOM /u"With Unicode signature (BOM): +" /t"Without Unicode signature (BOM): -" /p(h) "D:\Program Files\EmEditor\EmEditor.exe" "D:\Users\Debath\AppData\Local\Temp\явдл фукдл е уц дел\file.txt" /nr /sp /cp %1 /cps %2 /ss%3 /sa "D:\Users\Debath\AppData\Local\Temp\явдл фукдл е у.%2"


EmEditor получает такую комстроку (чтобы успеть её увидеть, можно попробовать перекодировать файл в UTF-16 без BOM из 1251 в UTF-16 - тогда EmEditor покажет сообщение о нулевых символах в файле):
Code:
"D:\Program Files\EmEditor\EmEditor.exe" "D:\Users\Debath\AppData\Local\Temp\явдл фукдл е уц дел\file.txt" /nr /sp /cp 1251 /cps 65537 /ss+ /sa "D:\Users\Debath\AppData\Local\Temp\явдл фукдл е у.65537"


Проверь у себя комстроку AskParam, когда нажимаешь кнопку и он показывает окно.

#274:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Tue Apr 17, 2018 16:10
    —
Вот эта строка не работает:
 плохо
В первом окне я выбираю 1251 (понятное дело, текущий файл должен иметь эту кодировку), потом - все равно (у меня "Unicode (UTF-16LE)"). Перекодировки не происходит, исходный файл открывается в EmEditor'е.
Вот эта строка:
 хорошо
работает отлично - создается перекодированный файл.
Разница в строках со словом "Cyrillic" во втором окне.
Твоя строка (первая) у меня не делает ничего.

Добавлено
Quote:
Проверь у себя комстроку AskParam, когда нажимаешь кнопку и он показывает окно
Проверил. Не через ProcessHacker, правда, а через ShowCmdLine, но реально несколько символов (около 20) из конца имени пропадают: усекается часть пути, до имени файла дело не доходит.

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

Еще немного поэкпериментировал. Вот результаты:
1) Если строка усекается "на этапе" имени-источника (%P%O.%E): перекодировка не происходит, а файл-результат с усеченным именем EmEditor предлагает открыть и в случае согласия юзверя создает пустой файл.
2) Если усечение происходит между %P%O.%E и %P%O.%%2, то есть на этапе ключей, то результат вообще может быть каким угодно в зависимости от того, какая часть какого ключа пропала. Как правило, не происходит ничего. Иногда - исходный файл просто открывается в EmEditor'е.
3) Если же усекается файл-результат, то не происходит ничего.

И еще добавлено
Создал суперлайт-версию для тестирования:
Code:
cmd=%COMMANDER_PATH%\AskParam\AskParam64.exe
param=/u"Cyrillic (windows-1251): 1251" /p(h) /u"Unicode (UTF-16LE): 65537" /p(h) /u"With Unicode signature (BOM): +" /p(h) "f:\Utils\Text\EmEditor\EmEditor.exe" "%P%O.%E" /nr /sp /cp %%1 /cps %%2 /ss%%3 /sa "%P%O.%%2"
Исходная версия рабочая.
Теперь ставим курсор внутрь любого ключа (между /u и /p) и тупо бьем по клаве. Когда суммарная длина строки параметров оказывается около 1000 символов, команда работать перестает, а строка усекается с конца.
Отсюда вывод - дело именно в длине всей строки, а не в числе ключей и уж тем более в их содержании.
Вот такие пироги...

#275:  Author: MVVLocation: Ростов-Дон PostPosted: Wed Apr 18, 2018 10:49
    —
Тут в первую очередь надо понять, где происходит усечение - в тотале при вызове AskParam (в частности, из-за ограничения на длину параметра в файле и поле ввода в диалоге) или в AskParam при вызове EmEditor, и мне пока этого не ясно.
Чтобы проверить, виноват ли тотал, надо посмотреть командную строку AskParam и проверить, всё ли в неё передано, что должно быть передано. И если виноват тотал, остается только сообщить о баге и ждать (или укоротить командную строку, например, с помощью выноса длинной части со списком кодировок в переменную окружения, устанавливаемую с помощью плагина Autorun).
Чтобы проверить, что EmEditor в некоторой ситуации получает не всю команду, надо смотреть его комстроку (это несложно, если редактор открывается и ждет, и сложнее, если он выполняет команду и сразу закрывается).
В любом случае, странно, что команда в ~1000 символов не работает, а в ~2000 символов работает.

Сейчас дописал к своей команде в конец в диалоге редактирования EM-команды кучу мусора (более 1400 символов), в конце которых "SOS SOS SOS". Посмотрел в комстроке AskParam, в конце три SOS присутствуют.
Проверил комстроку EmEditor (вынудив его показать диалог).
Конец комстроки тоже не обрезается.
А взял глубоковложенный тестовый файл:
Code:
D:\Temp\012345678901234567890123456789012345678901234567890123456789\012345678901234567890123456789012345678901234567890123456789\012345678901234567890123456789012345678901234567890123456789\явдл фукдл е уц дел\z

И редактору передалась битая комстрока (середина вырезана)... Причём, в комстроке AskParam так и указано! Похоже, баг в тотале!

 Примеры комстрок для сравнения


Добавлено спустя 1 час:

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

#276:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Sat May 19, 2018 09:31
    —
Еще баг, аналогичный предыдущему, причем здесь спихнуть вину на EmEditor точно не получится.
Речь вот об этом нововведении:
history.txt wrote:
13.03.18 Added: Command line: support switching to virtual folders via GUID, e.g. for drive list, use cd ::{20D04FE0-3AEA-1069-A2D8-08002B30309D} (32/64)
(хотя, конечно, подобные команды работали и раньше, в том числе и у меня, но... не в таком количестве и не в связке с AskParam)
 Строка параметров AskParam
Длина строки около 2000 символов. Так вот, при отработке команды производится попытка запустить новую копию Тотала, потому что ключ /o откусывается (для моих путей - до состояния ".../s /"). Стоит убрать любой /t-ключ, и все пучком.
MVV, моя команда изменения кодировки теперь работает отлично. То есть похоже, что граница ошибки просто сдвинулась с 1k символов на 2k, но при этом осталась. И похоже, дело не в %O. Это так?

#277:  Author: FlasherLocation: Москва PostPosted: Sat May 19, 2018 11:36
    —
Вахмурка
 Из твоего списка толк есть только от:
 Эти GUID на Win 7 вообще никуда не ведут:
Остальное — пустые папки. Так стоит ли с длиной заморачиваться?

#278:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Sat May 19, 2018 12:12
    —
Дело не в конкретных путях, а в возможных ошибках в AskParam (или в TC, что вероятнее)

#279:  Author: FlasherLocation: Москва PostPosted: Sat May 19, 2018 12:19
    —
Вахмурка wrote:
или в TC, что вероятнее
Вот и проверь без AskParam.

#280:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Sat May 19, 2018 12:22
    —
Проверял - работает. Как и с кодировками ранее. А косяк оказался не в EmEditor'е и даже не в AskParam'е, а как раз в ТС

#281:  Author: MVVLocation: Ростов-Дон PostPosted: Sat May 19, 2018 12:58
    —
Вахмурка wrote:
Длина строки около 2000 символов.

Забавляет, что я эту строчку даже в поле параметров кнопки вставить не могу, она обрезается после "/s /". Very Happy А когда нажал ОК, в BAR-файле строка закончилась так: "/s "...


Last edited by MVV on Sat May 19, 2018 13:02; edited 2 times in total

#282:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Sat May 19, 2018 13:01
    —
2MVV
Я использовал em_команду.
Так ты воспроизвел проблему? Каковы первые впечатления?

#283:  Author: MVVLocation: Ростов-Дон PostPosted: Sat May 19, 2018 13:03
    —
Вручную дописал остаток строки в BAR-файл, нажал кнопку, посмотрел комстроку AskParam: обрезается после "/s /".

Полагаю, в тотале просто есть ограничение на длину читаемой из INI-файла строки, из-за чего она обрезается. И, учитывая позицию обрезки, это ограничение равно 2048.

#284:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Sat May 19, 2018 13:13
    —
Тогда это баг, ибо
TC help wrote:
The maximum length of the command line is limited to 2047 characters on Windows 2000, and 8191 characters on Windows XP (the maximum supported by these operating systems)
Не знаю как у тебя, а у меня Win7x64, то есть явно не 2000.
Зарепортишь на англофоруме?
Получается, что Тоталу все равно, откуда брать параметры - из *.bar или из usercmd.ini. Разве это логично?

#285:  Author: MVVLocation: Ростов-Дон PostPosted: Sat May 19, 2018 14:16
    —
Это с трудом можно назвать багом, это скорее старое ограничение. Сделал запрос.

Quote:
Получается, что Тоталу все равно, откуда брать параметры - из *.bar или из usercmd.ini. Разве это логично?

А это как раз абсолютно логично, ведь смысл параметров одинаков.

#286:  Author: HEXFIXLocation: Калининград PostPosted: Fri May 01, 2020 12:01
    —
Подскажите, что нужно поправить в путях?
Code:
[em_SelectWithInterval]
cmd=%COMMANDER_PATH%\TOOLS\AskParam\AskParam.exe
param=/c"Выделение с интервалом" /u"Файлы и папки: 1" /t"Только файлы: 2" /t"Только папки: 3" /p(h)"Режим выделения" /u"Введите шаг выделения: " /p(h)"Шаг выделения" %COMMANDER_PATH%\Tools\TCScript\wscript.exe %COMMANDER_PATH%\SCRIPTS\SelectWithInterval.vbs %Z%V %%1 %%2

Пробовал и кавычки и двойные проценты, и всё равно никак не хочет заводится. С абсолютными путями разумеется работает.
Сам скрипт — "Выделить с заданным интервалом, начиная с элемента под курсором" от Flasher

#287:  Author: AvadaLocation: Россия, Саратов PostPosted: Fri May 01, 2020 14:37
    —
HEXFIX
О финальных точках — последнее предупреждение, далее последуют иные меры воздействия.

#288:  Author: MVVLocation: Ростов-Дон PostPosted: Fri May 01, 2020 16:33
    —
Есть предположение, что нужно как-то так:
Code:
param=/c"Выделение с интервалом" /u"Файлы и папки: 1" /t"Только файлы: 2" /t"Только папки: 3" /p(h)"Режим выделения" /u"Введите шаг выделения: " /p(h)"Шаг выделения" "%%COMMANDER_PATH%%\Tools\TCScript\wscript.exe" "%%COMMANDER_PATH%%\SCRIPTS\SelectWithInterval.vbs" %Z%V %%1 %%2

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

#289:  Author: HEXFIXLocation: Калининград PostPosted: Fri May 01, 2020 18:28
    —
К сожалению не работает:
Code:
---------------------------
Windows Script Host
---------------------------
Can not find script file "E:\Total Commander\COMMANDER_PATH\SCRIPTS\SelectWithInterval.vbs".

---------------------------
ОК   
---------------------------

#290:  Author: FlasherLocation: Москва PostPosted: Fri May 01, 2020 23:10
    —
Это как понимать?
HEXFIX wrote:
Total Commander\COMMANDER_PATH\

#291:  Author: HEXFIXLocation: Калининград PostPosted: Sat May 02, 2020 12:50
    —
Так я про то же. Скопировал-вставил строку параметров, которую предложил MVV — выдаёт вот такое.
Какие только варианты я уже не попробовал, постоянно какая-то фигня.
С абсолютными путями всё ОК.

#292:  Author: FlasherLocation: Москва PostPosted: Sat May 02, 2020 14:22
    —
Во второй переменной % учетверять надо.
P.S.: Кстати, я этот код потом пилил под новые версии.

#293:  Author: HEXFIXLocation: Калининград PostPosted: Sat May 02, 2020 15:46
    —
Ну наконец-то! Very Happy
Работает, спасибо.

#294:  Author: jentoso PostPosted: Sun Jul 25, 2021 13:04
    —
Возможно ли объединить три кнопки в одну и в зависимости от выбора метода создания архивы подставлялись соответствующие параметры или только с "костылем" в виде отдельного батника, как предлагалось когда-то ранее?
 Кнопки


Вопрос решился с применением TCFS2 по подсказке yozhik.
Для этого в TCFS2.ini надо добавить
 Hidden text


Забыл добавить итоговую кнопку, которая все это выполняет
 Hidden text


Last edited by jentoso on Thu Aug 05, 2021 17:15; edited 1 time in total

#295:  Author: MVVLocation: Ростов-Дон PostPosted: Thu Aug 05, 2021 11:49
    —
AskParam не умеет запрашивать разные наборы параметров в зависимости от каких-либо условий. Так что только батником.

Интересная кнопка с модификаторами.

#296:  Author: jentoso PostPosted: Mon Aug 09, 2021 00:19
    —
MVV
Ключ /i воспринимает только полные пути без всяких переменных?

#297:  Author: MVVLocation: Ростов-Дон PostPosted: Mon Aug 09, 2021 10:22
    —
В текущей версии - да. Пожалуй, помечу себе, что тут можно добавить поддержку переменных.

#298:  Author: jentoso PostPosted: Mon Aug 09, 2021 11:03
    —
MVV
Если будет поддержка штатно, это удобно.
Для себя выхожу из ситуации путем добавления через autorun переменной в Path.



Total Commander -> Плагины Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Page 1 of 1

Powered by phpBB © 2001, 2005 phpBB Group