Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

AskParam - диалог запроса параметров командной строки
Goto page Previous  1, 2, 3 ... 17, 18, 19
 
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
MVV



Joined: 15 Oct 2009
Posts: 4601
Location: Ростов-Дон

Post (Separately) Posted: Sat Feb 11, 2017 21:32    Post subject: Reply with quote

Добавил ключ /i для установки иконки.

AskParam beta 160
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2512
Location: Большая деревня Москва

Post (Separately) Posted: Tue Apr 17, 2018 12:06    Post subject: Reply with quote

Сооружал команду для перекодировки файлов через EmEditor. Получилось вот что:
 em-команда
Длина строки параметров около 1000 символов, то есть заведомо меньше, чем 32767. Тестил на пути с пробелами и кириллицей, а именно
Code:
f:\Users\Debath\AppData\Local\Temp\явдл фукдл е уц дел
Так вот, выходит, что при длинной строке параметров ее конец откусывается, и в программу передается
Code:
...Local\Te.%2
Стоит же удалить любой из ключей первого окна, как путь к файлу-результату входит полностью. Полная длина пути к файлу 70 символов, то есть далеко не 256.
У меня есть другая em-команда с AskParam, так там длина строки параметров 1968 символов - вдвое больше, чем здесь, и там все работает. Правда, там нет параметров типа %Р - только %1.
Насколько я понимаю, EmEditor у тебя установлен
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4601
Location: Ростов-Дон

Post (Separately) Posted: Tue Apr 17, 2018 15:49    Post subject: Reply with quote

У меня вроде работает:
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, когда нажимаешь кнопку и он показывает окно.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2512
Location: Большая деревня Москва

Post (Separately) Posted: Tue Apr 17, 2018 16:10    Post subject: Reply with quote

Вот эта строка не работает:
 плохо
В первом окне я выбираю 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 символов, команда работать перестает, а строка усекается с конца.
Отсюда вывод - дело именно в длине всей строки, а не в числе ключей и уж тем более в их содержании.
Вот такие пироги...
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4601
Location: Ростов-Дон

Post (Separately) Posted: Wed Apr 18, 2018 10:49    Post subject: Reply with quote

Тут в первую очередь надо понять, где происходит усечение - в тотале при вызове 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 час:

Сообщил о баге, заодно заметил важную вещь: суммарная длина комстроки, с которой запускается программа, при обрезании одинакова, т.е. где-то тотал упирается в какое-то внутреннее ограничение.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2512
Location: Большая деревня Москва

Post (Separately) Posted: Sat May 19, 2018 09:31    Post subject: Reply with quote

Еще баг, аналогичный предыдущему, причем здесь спихнуть вину на 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. Это так?
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 12849
Location: Москва

Post (Separately) Posted: Sat May 19, 2018 11:36    Post subject: Reply with quote

Вахмурка
 Из твоего списка толк есть только от:
 Эти GUID на Win 7 вообще никуда не ведут:
Остальное — пустые папки. Так стоит ли с длиной заморачиваться?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2512
Location: Большая деревня Москва

Post (Separately) Posted: Sat May 19, 2018 12:12    Post subject: Reply with quote

Дело не в конкретных путях, а в возможных ошибках в AskParam (или в TC, что вероятнее)
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 12849
Location: Москва

Post (Separately) Posted: Sat May 19, 2018 12:19    Post subject: Reply with quote

Вахмурка wrote:
или в TC, что вероятнее
Вот и проверь без AskParam.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2512
Location: Большая деревня Москва

Post (Separately) Posted: Sat May 19, 2018 12:22    Post subject: Reply with quote

Проверял - работает. Как и с кодировками ранее. А косяк оказался не в EmEditor'е и даже не в AskParam'е, а как раз в ТС
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4601
Location: Ростов-Дон

Post (Separately) Posted: Sat May 19, 2018 12:58    Post subject: Reply with quote

Вахмурка wrote:
Длина строки около 2000 символов.

Забавляет, что я эту строчку даже в поле параметров кнопки вставить не могу, она обрезается после "/s /". Very Happy А когда нажал ОК, в BAR-файле строка закончилась так: "/s "...
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…


Last edited by MVV on Sat May 19, 2018 13:02; edited 2 times in total
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2512
Location: Большая деревня Москва

Post (Separately) Posted: Sat May 19, 2018 13:01    Post subject: Reply with quote

2MVV
Я использовал em_команду.
Так ты воспроизвел проблему? Каковы первые впечатления?
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4601
Location: Ростов-Дон

Post (Separately) Posted: Sat May 19, 2018 13:03    Post subject: Reply with quote

Вручную дописал остаток строки в BAR-файл, нажал кнопку, посмотрел комстроку AskParam: обрезается после "/s /".

Полагаю, в тотале просто есть ограничение на длину читаемой из INI-файла строки, из-за чего она обрезается. И, учитывая позицию обрезки, это ограничение равно 2048.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2512
Location: Большая деревня Москва

Post (Separately) Posted: Sat May 19, 2018 13:13    Post subject: Reply with quote

Тогда это баг, ибо
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. Разве это логично?
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4601
Location: Ростов-Дон

Post (Separately) Posted: Sat May 19, 2018 14:16    Post subject: Reply with quote

Это с трудом можно назвать багом, это скорее старое ограничение. Сделал запрос.

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

А это как раз абсолютно логично, ведь смысл параметров одинаков.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3 ... 17, 18, 19
Page 19 of 19

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group