Страница 14 из 20
Добавлено: Ср янв 06, 2016 00:20
Flasher
MVV
Т.е. /rl - это и есть режим списка, а /rd - обычный? Ты про это писал?
Добавлено: Ср янв 06, 2016 14:00
MVV
Да. Режим списка, где нельзя ввести произвольное значение, и обычный режим, где можно. Названия они берут от соответствующих стилей CBS_DROPDOWN и CBS_DROPDOWNLIST.
Добавлено: Пт янв 22, 2016 11:44
Вахмурка
2
MVV
Сделал такую кнопку:[cut]TOTALCMD#BAR#DATA
%COMMANDER_PATH%\AskParam\AskParam64.exe
/c"Go to Environment Variable Path" /t"ALLUSERSPROFILE: %%ALLUSERSPROFILE%%" /t"APPDATA: %%APPDATA%%" /t"$COMMON_APPDATA: %%$COMMON_APPDATA%%" /t"$COMMON_DESKTOPDIRECTORY: %%$COMMON_DESKTOPDIRECTORY%%" /t"$COMMON_DOCUMENTS: %%$COMMON_DOCUMENTS%%" /t"$COMMON_PICTURES: %%$COMMON_PICTURES%%" /t"$COMMON_STARTMENU: %%$COMMON_STARTMENU%%" /t"$COMMON_STARTUP: %%$COMMON_STARTUP%%" /t"$COMMON_PROGRAMS: %%$COMMON_PROGRAMS%%" /t"CommonProgramFiles: %%COMMONPROGRAMFILES%%" /t"CommonProgramFiles(x86): %%COMMONPROGRAMFILES(x86)%%" /t"CommonProgramW6432: %%CommonProgramW6432%%" /t"$DESKTOP: %%$DESKTOP%%" /t"$FONTS: %%$FONTS%%" /t"LOCALAPPDATA: %%LOCALAPPDATA%%" /t"$MYPICTURES: %%$MYPICTURES%%" /t"$MYMUSIC: %%$MYMUSIC%%" /t"$MYVIDEO: %%$MYVIDEO%%" /t"$PERSONAL: %%$PERSONAL%%" /t"ProgramData: %%PROGRAMDATA%%" /t"ProgramFiles: %%PROGRAMFILES%%" /t"ProgramFiles(x86): %%PROGRAMFILES(x86)%%" /t"$PROGRAMS: %%$PROGRAMS%%" /t"ProgramW6432: %%PROGRAMW6432%%" /t"PSModulePath: %%PSMODULEPATH%%" /t"PUBLIC: %%PUBLIC%%" /t"$STARTMENU: %%$STARTMENU%%" /t"$STARTUP: %%$STARTUP%%" /t"SystemDrive: %%SYSTEMDRIVE%%" /t"SystemRoot: %%SYSTEMROOT%%" /t"TEMP: %%TEMP%%" /t"TMP: %%TMP%%" /t"USERPROFILE: %%USERPROFILE%%" /t"WINDIR: %%WINDIR%%" /p(h)"Environment Variable Name: Path" %%COMMANDER_EXE%% /o /L="%%1" /s
%WINDIR%\system32\shell32.dll,66
Go to Environment Variable Path
-1[/cut]Вроде бы работает, но есть вопросы "косметического" свойства.
1. Нельзя ли сделать, чтобы имя псевдопеременной (до двоеточия) было обрамлено %? А то сейчас первая строчка выглядит как
вместо
2. Почему некоторые переменные не разворачиваются в путь (при этом переход работает нормально)? Например,
Код: Выделить всё
$COMMON_DESKTOPDIRECTORY: %$COMMON_DESKTOPDIRECTORY%
вместо
Код: Выделить всё
$COMMON_DESKTOPDIRECTORY: c:\Users\Public\Desktop
3. Изменение первого ключа /t на /u не меняет ничего. Разумно было бы, чтобы никакого умолчательного значения не предлагалось. Поэтому мне как раз нужно /t, а диалог ведет себя так, как если бы было /u. Нужно, чтобы нажатие ОК не вызывало бы никакого действия и чтобы юзверь обязательно открыл список и выбрал один пункт. Как этого добиться?
Добавлено: Пт янв 22, 2016 11:59
MVV
1. Нельзя ли сделать, чтобы имя псевдопеременной (до двоеточия) было обрамлено %?
Можно отключить парсинг переменных с помощью ключа
/e-. Но получишь другую крайность (до и после двоеточия будут имена переменных). Или найди себе юникодный символ, похожий на знак
%, чтобы обмануть расширятель в нужном месте. Есть забавная альтернатива: ℅.
2. Почему некоторые переменные не разворачиваются в путь (при этом переход работает нормально)? Например,
Тут всё просто: это внутренние псевдо-переменные тотала, система о них ничего не знает.
3. Изменение первого ключа /t на /u не меняет ничего. Разумно было бы, чтобы никакого умолчательного значения не предлагалось.
По умолчанию выбранным является первый элемент, а
/u лишь позволяет явно задать, какой элемент нужно выбрать. А добиться пустого значения легко: сделай текущей пустую строку с помощью
/u"".
Добавлено: Пт янв 22, 2016 12:33
Вахмурка
найди себе юникодный символ, похожий на знак %, чтобы обмануть расширятель в нужном месте. Есть забавная альтернатива: ℅
Этот символ заменяется на ?. Win7Eng64
Добавлено: Пт янв 22, 2016 12:37
MVV
Я вписал этот символ в кнопку и без проблем вижу в AskParam, тоже Win7x64. Но скорее плохо в нём то, что нельзя скопировать имя переменной со знаками % для последующего использования.
Добавлено: Пн фев 08, 2016 11:46
Вахмурка
2
MVV
1. Создать два батника 1.bat и 2.bat произвольного содержания и поместить их, скажем, в c:\Test;
2. Создать кнопку
Код: Выделить всё
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\AskParam\AskParam64.exe
/u1 /t2 /p "c:\Test\%%1.bat"
C:\utils\totalcmd\WCMICONS.DLL
Batches
-1
Выполнить батник не получается, вне зависимости от числа знаков % перед 1.
3. Меняем кнопку
Код: Выделить всё
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. Опять меняем кнопку
Код: Выделить всё
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 с использованием переменных окружения?
Добавлено: Пн фев 08, 2016 14:09
MVV
Выполнить батник не получается, вне зависимости от числа знаков % перед 1.
Это происходит потому, что в пути к вызываемой программе раскрываются только переменные окружения, но не подстановочные параметры.
Вахмурка писал(а):Все работает! Отсюда первый вопрос (не слишком важный) - почему? Дело в расширении "bat"? Но ведь оно относится ОСью к исполняемым, наряду с "ехе", "com" и "cmd".
Учитывая вышесказанное, ответ должен прийти сам: здесь путь к батнику уже является параметром программы, а не частью пути к ней.
Вахмурка писал(а):Сообщение "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).
Вахмурка писал(а):Третий вопрос (самый важный) - как вообще выполнить батник через AskParam с использованием переменных окружения?
Вариантов могу назвать два:
1. Сама система при вызове батника автоматически вызывает для него интерпретатор
cmd, т.к. батник не является исполнимым файлом, поэтому вполне можно использовать вариант с явным вызовом
cmd. Но тогда важно не забыть правильно передать аргументы батника:
cmd /c ""c:\Test\%%1.bat" arguments" (дополнительные внешние кавычки вокруг всей командной строки после
/c обязательны, т.к.
cmd в силу своей природной тупости очень любит их оттуда снимать).
2. Так как AskParam автоматически определяет переменные окружения с ответами, их можно использовать в пути к вызываемой программе вместо подстановочных параметров:
c:\Test\%AskParam1%.bat.
Добавлено: Вс фев 14, 2016 12:59
Вахмурка
А сложно будет переделать программу, чтобы опции представлялись в виде не dropdown list, а набора radiobutton'ов? Результат, понятно, тот же. Плюсы: 1) экономия щелчка на раскрытие списка: 2) наглядность. Минус я вижу только один - изменение размеров окна в зависимости от числа пунктов. Будет также и ограничение на максимальное число оных. Но все же - программно это сложно обеспечить?
Добавлено
Забыл сказать очевидное - режим задается ключом, скажем, /o. По умолчанию - текущее состояние
Добавлено: Вс фев 14, 2016 19:56
MVV
Желания заморачиваться с радиокнопками никакого. Текущие элементы размещены статически в шаблоне диалога, а переменное число радиокнопок придётся создавать вручную, при этом заботиться о том, чтобы их размер был нормальным при каждом масштабе шрифтов.
Добавлено: Вт фев 16, 2016 20:27
Вахмурка
Еще один запрос по "косметике": если сейчас вставить символ табуляции до двоеточия в режиме /p(h), то он (символ табуляции) игнорируется, превращаясь в пробел. Нельзя ли добавить ключ, чтобы в dropdown list'е комментарий (до двоеточия) и параметр (после) выравнивались по столбцам:
Код: Выделить всё
Comment 1 : Key1
Long Comment 2 : Key2
Very Long Comment 3 : Key3
То есть что-то типа ключа \t в меню Тотала. Если трудно сделать, чтобы нужное число табуляций вставлялось автоматически, то эту задачу можно переложить на широкие плечи юзверя. Синтаксис, например, такой:
- вставить 3 табуляции и т.д.
Добавлено: Пн май 16, 2016 19:37
Dimsok
А какой-нибудь подобной программы, только независимой от Тотала, никто не знает?
Добавлено: Пн май 16, 2016 19:47
Flasher
Из первого поста: "Требования: Windows 2000 и выше". Про зависимость от ТС ни слова.
Добавлено: Пн май 16, 2016 20:33
Вахмурка
Подтверждаю. Я ее в том числе и независимо использую. Если нет параметров %P и %N и прочих, то Тотал вообще ни при чем...
Добавлено: Пн май 16, 2016 23:34
Dimsok
Я ее в том числе и независимо использую
А пример можно привести?