И где здесь ФЗ?Orion9 писал(а):Или через вычисляемые строки:
Тогда придется несколько томов разных справок наизусть заучивать.Orion9 писал(а): полностью ознакомится со справкой
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
Сомневаюсь, что это связано с записью, она полностью корректна, скорее что-то с фактическим путём. Проверил, что приходит в функцию с вашей строкой и там всё ожидаемо в порядке.AkulaBig писал(а):ShellExec "%COMMANDER_PATH%\Utilities\TCPlugman\Plugman.exe" /Restart
Код: Выделить всё
MsgBox "%COMMANDER_PATH%\Utilities\TCPlugman\Plugman.exe"Ну это же не выход, оно и так должно работать. Все три параметра ShellExec в командной записи разворачивают переменные, и это документировано.Orion9 писал(а):то можно попробовать через промежуточную переменную
Код: Выделить всё
# применение конкатенации переменной
ShellExec(COMMANDER_PATH & "\Utilities\TCPlugman\Plugman.exe", "/Restart")
# использование Set для разворачивания переменных в тексте
ShellExec(Set("%COMMANDER_PATH%\Utilities\TCPlugman\Plugman.exe"), "/Restart")
Мне кажется это идеальный вариант. Остальные немного тяжеловаты. Это чисто на мой вкус. Дальше ведь команды посложнее будут и там запутаться можно:Loopback писал(а):# применение конкатенации переменной
ShellExec(COMMANDER_PATH & "\Utilities\TCPlugman\Plugman.exe", "/Restart")
Код: Выделить всё
# ShellExec "%COMMANDER_PATH%\Utilities\MENUIMG\MENUIMG.exe" '"%COMMANDER_PATH%\Bars\RESTART_RUS.BAR||INPUT"'
ShellExec(COMMANDER_PATH & "\Utilities\MENUIMG\MENUIMG.exe", COMMANDER_PATH & "\Bars\RESTART_RUS.BAR", "INPUT")
Код: Выделить всё
ShellExec /SW_HIDE /WAIT %COMSPEC% '/c rename "%ini_Color%" %prev_name%'
На самом деле, если работает - то зачем переписывать? Командная запись-то никуда не денется.AkulaBig писал(а):не удается переписать на ФЗ
Код: Выделить всё
ShellExec('~/SW_HIDE /WAIT', COMSPEC, '/c rename "' & ini_Color & '" ' & prev_name)
Код: Выделить всё
ShellExec('~/SW_HIDE /WAIT', COMSPEC, StrFormat('/c rename "%s" %s', ini_Color, prev_name))
Действительно неожиданно, потому что при такой записи INPUT будет передан в ShellExec третьим параметром - который рабочий каталог... Так что это заморочки menuimg.AkulaBig писал(а):Неожиданно работает
Работает!Loopback писал(а):Но если хочется, то как-то так:
Мне кажется это как-раз тот случай, где нет смысла переписывать КЗ. Запись ужасна для понимания. Но, наверное все-же сделаю это, ради принципа.Loopback писал(а):Как по мне, читается не лучше.
Да, я это понял. Поэтому и удивился. Надо попробовать записать в виде, как вы сейчас привели. Вполне возможно что такая расстановка кавычек более правильная.Loopback писал(а):Действительно неожиданно, потому что при такой записи INPUT будет передан в ShellExec третьим параметром - который рабочий каталог...
Да, надо будет при случае спросить у Андрея.Loopback писал(а):Так что это заморочки menuimg
Код: Выделить всё
ShellExec(COMMANDER_PATH & "\Utilities\TCPlugman\Plugman.exe", "/Restart")
Код: Выделить всё
ini_TitleInfo = %COMMANDER_PATH% & "\Ini\TitleInfo.ini"
TitleInfoThemeNum = IniRead(ini_TitleInfo, "Theme", "ThemeNum", 0)
FormatData = IniRead(ini_TitleInfo, "Theme", TitleInfoThemeNum)

Вот эти процентики остались:AkulaBig писал(а):Я-же процентики убрал.
Переменные будут раскрываться как есть. А в чём тут проблема?AkulaBig писал(а):переменные будут раскрываться с учетом пробелов в путях и названиях?
Все получилось.Loopback писал(а):Вот эти процентики остались
Подкинул я вам тему для размышленияLoopback писал(а):Видимо надо какую-то ошибку выдавать.
Очень болезненное. Потому что сразу стало непонятно, когда писать %COMMANDER_PATH%, а когда COMMANDER_PATH.Loopback писал(а):В общем, чувствую, довольно болезненное изменение.
Вопрос в том, что если сборка ТС будет лежать по пути с пробелом и в папке с пробелом, она будет работать?Loopback писал(а):Переменные будут раскрываться как есть. А в чём тут проблема?
Очень крутые фичи и фиксы в новой версии. Сейчас, правда, заняться обновлением не могу, но завтра по возможности проверю.Loopback писал(а):Версия Autorun 2.2.18 beta
[cut="Список изменений"]
* КРИТИЧНО: отключено использование переменных вида %var% в выражениях
* КРИТИЧНО: убрана директива LegacyExpressions
* Process: ProcessExecGetOutput может возвращать текст длиной более 32765 символов
+ функции FileGetName, FileGetBaseName, FileGetDir, FileGetExt, FileChangeExt
- в методе GetStr объекта Buffer исправлено получение данных при Size=0
* внутренние изменения в работе объектов
+ конструкция Do..Until
+ конструкция For..In для перечисления объектов
+ методы LoadFromFile и SaveToFile в List
+ функции FileRead, FileWrite, FileAppend
+ объекты BinaryFile, TextFile
- потенциальная возможность падения при работе потоков
- не определялись некорректные символы в имени пользовательской функции
* изменение в работе Plugin: если wdx-плагин уже загружен TC, то выгружаться он не будет
+ директивы AutorunErrorBoxSimple, AutorunErrorBoxEditor, AutorunErrorBoxFont
+ скрипт может быть открыт для редактирования из нового диалога об ошибке
+ скрипт может быть прерван из нового диалога об ошибке
+ свой диалог сообщения об ошибке
- еще одна попытка исправить появление MsgBox и сообщений об ошибках под x64
[/cut]
Проценты в КЗ, без процентов в ФЗ. Как раз теперь всё чётко разграничено.AkulaBig писал(а):Потому что сразу стало непонятно, когда писать %COMMANDER_PATH%, а когда COMMANDER_PATH.
Ну вот взять ту же строку COMMANDER_PATH & "\Utilities\TCPlugman\Plugman.exe", допустим COMMANDER_PATH имеет значение C:\Total Commander. После склейки получится C:\Total Commander\Utilities\TCPlugman\Plugman.exe. Почему бы ей не работать?AkulaBig писал(а):Вопрос в том, что если сборка ТС будет лежать по пути с пробелом и в папке с пробелом, она будет работать?
Теперь при запуске ТС сразу мелькает какое-то сообщение, хотя со вчерашней версией все работает. И при этом отключает плагин Autorun_NagScreen.dll. То-есть появляется окно с предложением нажать на кнопку. Так бывает, когда ошибка в коде скриптов. Вернулся на вчерашнюю версию.Loopback писал(а):Обновил версию по той же ссылке
Это понятно. Но в данных случаях проценты ставить обязательно:Loopback писал(а):Проценты в КЗ, без процентов в ФЗ. Как раз теперь всё чётко разграничено.
Код: Выделить всё
IcoNumber = "%COMMANDER_PATH%\Images\Enumeration\00.ico"
...
Pragma Include %COMMANDER_PATH%\Plugins\wdx\Autorun\IcoNumber.aucfg
...
SetEnv /EV arc_7z %COMMANDER_PATH%\Archivers\7z\7z.exe
Код: Выделить всё
ini_TitleInfo = %COMMANDER_PATH% & "\Ini\TitleInfo.ini"
К сожалению его даже не удается увидеть. Тогда-бы хоть понятно стало, это ошибка в Autorun или все-же что-то я не переделал.Loopback писал(а):Ну и новое сообщение об ошибке чётко указывает, где и что нужно сделать.
С этим уже все ясно. Просто до этого %COMMANDER_PATH% надо было брать в кавычки.Loopback писал(а):Почему бы ей не работать?