AZJIO
- Стаж: 6 лет 8 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
rekshd, тогда надо научить готовый лаунчер передавать ком-строку. На данный момент можно присоединить лаунчер, но он лишь запустит программу. Хотя если в Com2Selfiles.exe применить флаг сохранения файла, а в батнике прописать чтение файла, то вполне можно выполнить команду с переданными путями. В лаунчере есть хоткеи, то есть вызываем хоткей, выполняется Com2Selfiles.exe и запускает LauncherPB, то есть фактически мы при вызове хоткея видим появление LauncherPB где кликаем хоткей кнопки, лаунчер закрывается и запускает батник (с Hide скрытый), который запускает любую программу передав ей пути файлов. То есть всё готово уже, только пользоваться. Обновил (на яндексе) Добавлен флаг 32 и 64 для Debug. 32- запись в файл, 64 - запуск без передачи файлов, потому что лаунчер воспринимал файлы как путь у ini-файлу, теперь с флагом 64 он запускается без параметров а с параметром "Arg = " можно передать путь к ini-файлу лаунчера.конфиг лаунчера для примера[gui] Title= FormWidth=180 FormHeight=290 Columns=1 Wow64=1 Esc=1 [1] name=Meld exe=C:\Program Files (x86)\Meld\Meld.exe exit = 1 hotkey=Ctrl+M [2] name=Notepad++ exe=C:\Program Files (x86)\Notepad++\notepad++.exe exit = 1 hotkey=Ctrl+N [3] name=1by1 exit = 1 exe=C:\Program Files (x86)\1by1\1by1.exe hotkey=Ctrl+1 [4] name=Firefox exe=C:\Program Files\Mozilla Firefox\firefox.exe exit = 1 hotkey=Ctrl+F [5] name=AIMP exe=C:\Program Files (x86)\AIMP\AIMP.exe exit = 1 hotkey=Ctrl+A [6] name=QTranslate exe=C:\Program Files (x86)\QTranslate\QTranslate.exe exit = 1 hotkey=Ctrl+Q [7] name=msconfig hint=Run~msconfig exe=%systemroot%\system32\msconfig.exe icon=msconfig.exe exit = 1 hotkey=Ctrl+C [8] name=regedit exe=regedit.exe exit = 1 hotkey=Ctrl+R теперь вместо EXE файлов указать батники с теми же иконками и с чтением строки из файла. Ещё обновил оба Добавлен Charset=0 для установки кодировки файла, так как BAT работает с Ascii и добавил read.bat для примера чтения строк батником.
|
AZJIO
- Стаж: 6 лет 8 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
Сделал батник для примера@Echo Off CHCP 1251>nul SetLocal EnableDelayedExpansion Set file=%TEMP%\pkm.txt For /F "usebackq tokens=* delims=" %%i In ("%file%") Do ( set string=!string! "%%i" ) Start "" "C:\Program Files (x86)\Meld\Meld.exe" %string% и передаёт 2 файла программе сравнения Meld, но проблема если в пути символ "!", то он пропадает и Meld соответственно не видит путь. Переменную %%i менял на %%~si чтобы получить короткие пути, Meld не понимает такой путь, для пробы делал %%~pi то есть взять путь из переменной и на удивление символ "!" не пропадал из пути, но это была папка, что же тогда сделать чтобы не было проблем с путями? Для теста можно заменить путь "%TEMP%\pkm.txt" на свой файл и вставить туда два пути к файлам с "!" и вывести
|
Отправлено: 28-Сен-2022 21:26
(спустя 1 час 42 минуты)
AZJIO
- Стаж: 6 лет 8 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
97202и исчо. Мелд 3.22.0.0 2022 года у меня совершенно спокойно запускается в нативном портабл варианте с таким set.ini он содержит файлов на 100 Мб, он полностью тянет с собой оболочку, движок GTK3, то есть он как бы не использует ресурсы Windows, у него свой фэйс, не такой как в Windows, так как изначально написан для Linux. У меня была версия 3.18.5, скачал последнюю это чисто убунтовый фэйс GNOME, где в заголовке находятся кнопки. В 3.18.5 ещё было похоже ближе к Windows.97202а мелда с русским фейсом ты не встречал ? в линуксе он на русском, я даже и не заметил, так как в настройки и меню не лезу. Попробовал из линукса скопировать файл перевода и положил с таким же путём в Meld, вместо английского стали квадраты. Там бинарный файл и он может зависеть от версии, тем более "po"-файлы текстовые, а "mo" - бинарные, компилируемые из "po". Путь \Meld\share\locale\ru\LC_MESSAGES\meld.mo но и то криво сработало для версии 3.18.5, а для 3.22.0 вообще не среагировало. На официальном сайте есть текст: Translations https://l10n.gnome.org/module/meld/ но там "po"-файл, надо компилировать в "mo" (в Linux) и пробовать как подхватится.
|
rekshd
- Стаж: 5 лет 11 месяцев
- Сообщений: 331
- Репутация:7[+] [-]
|
|
Отправлено: 28-Окт-2022 22:21
(спустя 1 час 17 минут)
AZJIO
- Стаж: 6 лет 8 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
rekshd, Обновил, проверяй, всё должно работать, проверил используя WinMerge.Path = "C:\Portable\Araxis Merge\Araxis Merge.exe" "%1" "%2" "%3" такая комбинация не работает, надо просто указать путь "C:\Portable\Araxis Merge\Araxis Merge.exe" и выделить 3 файла, они передадутся одной строкой, выделишь 4 файла, передаются 4 файла, ну а использоваться как я понимаю будут 3, так как "Araxis Merge" сам будет лишнее игнорировать думаю. Можно конечно заставить если число файлов не совпадает то игнорировать, но на мой взгляд это будет только хуже, проги сами умеют действовать если им недодали или лишка передали, прога просто открывает окно для выбора второго файла, то есть в одной папке запустить, из другой перетянуть и бросить, так гибче способ.
|
rekshd
- Стаж: 5 лет 11 месяцев
- Сообщений: 331
- Репутация:7[+] [-]
|
|
AZJIO
- Стаж: 6 лет 8 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
rekshd, теоретически "Debag" он не нужен, ведь главное программа запускается. Поэтому и назван Debag (Отладчик). Но если вдруг надо получить просто имена файлов без запуска каких либо программ, то задаём флаги Debag. Вместо того чтобы запустилась программа вылетает сообщение и показывает какие файлы были выделены. Причём сообщение всё же предлагает выполнить программу, если таковая есть, то есть флаг не только выдаёт информацию, но и выполняет роль подтверждение согласие на выполнение Path-программы, что если надо было просто скопировать файлы, ведь Ctrl+C на диалоговом окне копирует содержимое, мы же не можем скопировать имена файлов выделив их, так как там будет некий файловый дескриптор, а не текст для вставки. Флаги 2 и 8 сами копируют в буфер обмена, не надо копировать с окна сообщения. Другие флаги 16, 32, 64 и так в справке понятно написаны, нечем дополнить. Флаги выполняются самостоятельно, если указать все флаги, то они выполнятся все, то есть и мессага и буфер обмена и сохранение списка файлов в файл. Флаги складываешь, например 1+16+32+64=113, то есть если Debag=113, то выполняются флаги 1, 16, 32, 64. Можешь почитать, что такое битовый флаг. Флаги 4 и 8 позволят увидеть ком-строку, понять что в ней неправильно, может кавычек нет или разделитель не тот или добавочный аргумент не туда вставился. На счёт Arg. Допустим программе передаются имена файлов: WinMergeU.exe "путь1" "путь2" Что если требуется добавить ключ, например чтобы получилась строка WinMergeU.exe /i "путь1" "путь2" тогда надо написать Arg = /i, то есть к параметрам в Arg добавятся ещё пути передаваемых файлов. Если Arg на является пустой строкой, то к содержимому Arg добавится пробел как разделитель и имена файлов, а если Arg пустая строка, то только имена файлов. Кстати, можно поиграться с такой фичей (т.е. добавить этот функционал, его пока нет): Arg=%p \i Arg=\p1:%1 \p2:%2 \t \x В чём тут смысл? Если в Arg найден %p (переменная параметра), то заменяем её на строку файлов. Что это даёт? Параметр \i может быть в конце ком-строки, а не жёстко в начале. Что если запускаемая программа требует особый порядок параметров, а не любое их расположение? Во втором примере, если в Arg найден %1, %2 и т.д. до %9, то каждый путь файла может быть вставлен в свою позицию. Что если программа требует перед именем файла некий префикс, который идентифицирует этот параметр как особый, как файл, то есть параметры именные, тогда не получится просто вставить строку файлов. Хотя можно поиграться разделителем и добиться этого или почти этого, но всё же такой способ может кому-то быть более удобным и понятным.LauncherComLine не хочешь в эту тему добавить ? Добавил в первый пост.
|
rekshd
- Стаж: 5 лет 11 месяцев
- Сообщений: 331
- Репутация:7[+] [-]
|
AZJIO, В процессе тестирования возникла одна загадка, которую я пока не могу отгадать... При работе с одиночным файлом Com2Selfiles "захватывает полный адрес" файла, но вот как его просто вставить в консоль cmd - не понимаю Можно конечно просто перетянуть файл в консоль, если она уже открыта, при этом по необходимости и кавычки вокруг адреса файла проставятся ... Но хотелось бы запустить консоль с уже захваченным Com2Selfiles адресом одиночного файла. Пока не получается решить этот вопрос ...
|
rekshd
- Стаж: 5 лет 11 месяцев
- Сообщений: 331
- Репутация:7[+] [-]
|
Максимум, что получилось - открыть командную строку с адресом той папки, где я нахожусь на момент запуска хотекея Вот код секции ини файла[cmd] Path = cmd ModeWorkDir = 0 Select = 3 Separator = " " Debug = 32 Quotes = " Charset = 24
|
AZJIO
- Стаж: 6 лет 8 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
rekshd как я понимаю это уже проблема батника.а может выполнить код который переменной %s% назначит путь, а потом ввести переменную и параметры запуска и задача решена.
|
rekshd
- Стаж: 5 лет 11 месяцев
- Сообщений: 331
- Репутация:7[+] [-]
|
97893как я понимаю это уже проблема батника Дак батник я в способе описанном выше ведь вообще не использовал. Командную строку с адресом той папки, где я нахожусь на момент запуска хотекея запускает сам Com2Selfiles.- Кстати, с PowerShell так не получилось. Потребовалось создать батник PS.cmd с таким содержимымНапрямую из ини такая команда не срабатывает, как и сам батник с относительным путём. Вотрабочая секция ини для PowerShell[PowerShell] Path = "C:\Com2Selfiles\PS.cmd" ; Path = PS.cmd Почему то не работает ModeWorkDir = 0 Select = 3 Separator = " " Debug = 32 Quotes = " Charset = 24 Так же как и с cmd, PowerShell запускается с адресом той папки, где я нахожусь на момент запуска хотекея- Добавлено через 13 минут 47 секунд: Повторюсь, Com2Selfiles (секция cmd) у меня железобетонно открывает окно cmd с адресом папки в которой я нахожусь на момент запуска Com2Selfiles хоткеем. Остаётся каким то образом вставить за адресом папки имя одиночного файла, который выделен при нажатии хоткея. Вот именно это у меня и не получается. Причём имя этого файла должно быть экранировано " с обоих сторон при наличии в имени этого файла пробелов и\или русских букв Спросишь Ну и зачем это нужно ? Ответ прост: скажем, хочу я посмотреть как работает какой-либо батник. Я запускаю батник из проводника, он выполняется и закрывается. Ничего не успеваю увидеть... Если ж я запускаю батник из командного окна и батнике есть в конце Pause, то я вижу что происходило при работе батника и могу скорректировать батник при необходимости. Вот тока одно Большое НО ... Имя самого батника приходится каждый раз вбивать ручками ... Вот это я и хочу автоматизировать, что б в итоге получилось следующее: Я выделяю в проводнике файл Нажимаю хоткей У меня открывается окно cmd с уже прописанным полным адресом этого файла (включая имя самого файла) при необходимости экранированным " Остаётся тока нажать Энтер ! И отслеживать работу скрипта
|
AZJIO
- Стаж: 6 лет 8 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
rekshd ключ /k оставляет окно cmd.exe открытым. Arg=/k
|
Страница 2 из 3
Текущее время: 21-Ноя 16:08
Часовой пояс: UTC + 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы к сообщениям Вы можете скачивать файлы
|
|