AskParam - диалог запроса параметров командной строки
Модераторы: Моторокер, Avada, CaptainFlint, Nik, d-view
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
Сооружал команду для перекодировки файлов через EmEditor. Получилось вот что:Длина строки параметров около 1000 символов, то есть заведомо меньше, чем 32767. Тестил на пути с пробелами и кириллицей, а именноТак вот, выходит, что при длинной строке параметров ее конец откусывается, и в программу передаетсяСтоит же удалить любой из ключей первого окна, как путь к файлу-результату входит полностью. Полная длина пути к файлу 70 символов, то есть далеко не 256.
У меня есть другая em-команда с AskParam, так там длина строки параметров 1968 символов - вдвое больше, чем здесь, и там все работает. Правда, там нет параметров типа %Р - только %1.
Насколько я понимаю, EmEditor у тебя установлен
em-команда
Код: Выделить всё
[em_test]
cmd=%COMMANDER_PATH%\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) %%COMMANDER_DRIVE%%\Utils\Text\EmEditor\EmEditor.exe "%P%O.%E" /nr /sp /cp %%1 /cps %%2 /ss%%3 /sa "%P%O.%%2"Код: Выделить всё
f:\Users\Debath\AppData\Local\Temp\явдл фукдл е уц делКод: Выделить всё
...Local\Te.%2У меня есть другая em-команда с AskParam, так там длина строки параметров 1968 символов - вдвое больше, чем здесь, и там все работает. Правда, там нет параметров типа %Р - только %1.
Насколько я понимаю, EmEditor у тебя установлен
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
У меня вроде работает:
AskParam получает такую комстроку (смотрю в ProcessHacker):
EmEditor получает такую комстроку (чтобы успеть её увидеть, можно попробовать перекодировать файл в UTF-16 без BOM из 1251 в UTF-16 - тогда EmEditor покажет сообщение о нулевых символах в файле):
Проверь у себя комстроку AskParam, когда нажимаешь кнопку и он показывает окно.
Код: Выделить всё
[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"Код: Выделить всё
"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"Код: Выделить всё
"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"- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
Вот эта строка не работает:В первом окне я выбираю 1251 (понятное дело, текущий файл должен иметь эту кодировку), потом - все равно (у меня "Unicode (UTF-16LE)"). Перекодировки не происходит, исходный файл открывается в EmEditor'е.
Вот эта строка:работает отлично - создается перекодированный файл.
Разница в строках со словом "Cyrillic" во втором окне.
Твоя строка (первая) у меня не делает ничего.
Добавлено
Еще добавлено
Еще бы твоя строка что-то делала, если у нее хвост тоже усекается.
Попробуй искусственно "нарастить" длину строки за счет многократного указания одних и тех же ключей.
Еще немного поэкпериментировал. Вот результаты:
1) Если строка усекается "на этапе" имени-источника (%P%O.%E): перекодировка не происходит, а файл-результат с усеченным именем EmEditor предлагает открыть и в случае согласия юзверя создает пустой файл.
2) Если усечение происходит между %P%O.%E и %P%O.%%2, то есть на этапе ключей, то результат вообще может быть каким угодно в зависимости от того, какая часть какого ключа пропала. Как правило, не происходит ничего. Иногда - исходный файл просто открывается в EmEditor'е.
3) Если же усекается файл-результат, то не происходит ничего.
И еще добавлено
Создал суперлайт-версию для тестирования:Исходная версия рабочая.
Теперь ставим курсор внутрь любого ключа (между /u и /p) и тупо бьем по клаве. Когда суммарная длина строки параметров оказывается около 1000 символов, команда работать перестает, а строка усекается с конца.
Отсюда вывод - дело именно в длине всей строки, а не в числе ключей и уж тем более в их содержании.
Вот такие пироги...
плохо
Код: Выделить всё
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"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" /t"Cyrillic (koi8-ru): 21866" /t"Cyrillic (koi8-r): 20866" /t"Cyrillic (iso-8859-5): 28595" /t"Cyrillic (cp866): 866" /t"Binary (Hexadecimal View): 65540" /p(h) /cBOM /u"With Unicode signature (BOM): +" /t"Without Unicode signature (BOM): -" /p(h) %%COMMANDER_DRIVE%%\Utils\Text\EmEditor\EmEditor.exe "%P%O.%E" /nr /sp /cp %%1 /cps %%2 /ss%%3 /sa "%P%O.%%2"Вот эта строка:
хорошо
Код: Выделить всё
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"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) %%COMMANDER_DRIVE%%\Utils\Text\EmEditor\EmEditor.exe "%P%O.%E" /nr /sp /cp %%1 /cps %%2 /ss%%3 /sa "%P%O.%%2"Разница в строках со словом "Cyrillic" во втором окне.
Твоя строка (первая) у меня не делает ничего.
Добавлено
Проверил. Не через ProcessHacker, правда, а через ShowCmdLine, но реально несколько символов (около 20) из конца имени пропадают: усекается часть пути, до имени файла дело не доходит.Проверь у себя комстроку AskParam, когда нажимаешь кнопку и он показывает окно
Еще добавлено
Еще бы твоя строка что-то делала, если у нее хвост тоже усекается.
Попробуй искусственно "нарастить" длину строки за счет многократного указания одних и тех же ключей.
Еще немного поэкпериментировал. Вот результаты:
1) Если строка усекается "на этапе" имени-источника (%P%O.%E): перекодировка не происходит, а файл-результат с усеченным именем EmEditor предлагает открыть и в случае согласия юзверя создает пустой файл.
2) Если усечение происходит между %P%O.%E и %P%O.%%2, то есть на этапе ключей, то результат вообще может быть каким угодно в зависимости от того, какая часть какого ключа пропала. Как правило, не происходит ничего. Иногда - исходный файл просто открывается в EmEditor'е.
3) Если же усекается файл-результат, то не происходит ничего.
И еще добавлено
Создал суперлайт-версию для тестирования:
Код: Выделить всё
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
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Тут в первую очередь надо понять, где происходит усечение - в тотале при вызове AskParam (в частности, из-за ограничения на длину параметра в файле и поле ввода в диалоге) или в AskParam при вызове EmEditor, и мне пока этого не ясно.
Чтобы проверить, виноват ли тотал, надо посмотреть командную строку AskParam и проверить, всё ли в неё передано, что должно быть передано. И если виноват тотал, остается только сообщить о баге и ждать (или укоротить командную строку, например, с помощью выноса длинной части со списком кодировок в переменную окружения, устанавливаемую с помощью плагина Autorun).
Чтобы проверить, что EmEditor в некоторой ситуации получает не всю команду, надо смотреть его комстроку (это несложно, если редактор открывается и ждет, и сложнее, если он выполняет команду и сразу закрывается).
В любом случае, странно, что команда в ~1000 символов не работает, а в ~2000 символов работает.
Сейчас дописал к своей команде в конец в диалоге редактирования EM-команды кучу мусора (более 1400 символов), в конце которых "SOS SOS SOS". Посмотрел в комстроке AskParam, в конце три SOS присутствуют.
Проверил комстроку EmEditor (вынудив его показать диалог).
Конец комстроки тоже не обрезается.
А взял глубоковложенный тестовый файл:
И редактору передалась битая комстрока (середина вырезана)... Причём, в комстроке AskParam так и указано! Похоже, баг в тотале!
Добавлено спустя 1 час:
Сообщил о баге, заодно заметил важную вещь: суммарная длина комстроки, с которой запускается программа, при обрезании одинакова, т.е. где-то тотал упирается в какое-то внутреннее ограничение.
Чтобы проверить, виноват ли тотал, надо посмотреть командную строку AskParam и проверить, всё ли в неё передано, что должно быть передано. И если виноват тотал, остается только сообщить о баге и ждать (или укоротить командную строку, например, с помощью выноса длинной части со списком кодировок в переменную окружения, устанавливаемую с помощью плагина Autorun).
Чтобы проверить, что EmEditor в некоторой ситуации получает не всю команду, надо смотреть его комстроку (это несложно, если редактор открывается и ждет, и сложнее, если он выполняет команду и сразу закрывается).
В любом случае, странно, что команда в ~1000 символов не работает, а в ~2000 символов работает.
Сейчас дописал к своей команде в конец в диалоге редактирования EM-команды кучу мусора (более 1400 символов), в конце которых "SOS SOS SOS". Посмотрел в комстроке AskParam, в конце три SOS присутствуют.
Проверил комстроку EmEditor (вынудив его показать диалог).
Конец комстроки тоже не обрезается.
А взял глубоковложенный тестовый файл:
Код: Выделить всё
D:\Temp\012345678901234567890123456789012345678901234567890123456789\012345678901234567890123456789012345678901234567890123456789\012345678901234567890123456789012345678901234567890123456789\явдл фукдл е уц дел\zПримеры комстрок для сравнения
Код: Выделить всё
# D:\Temp\Test folder name with spaces\z
"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:\MASM32\projects\cmdline.exe "D:\Program Files\EmEditor\EmEditor.exe" "D:\Temp\Test folder name with spaces\z." /nr /sp /cp %1 /cps %2 /ss%3 /sa "D:\Temp\Test folder name with spaces\z.%2"
# D:\Temp\0123456789\Test folder name with spaces\z
"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:\MASM32\projects\cmdline.exe "D:\Program Files\EmEditor\EmEditor.exe" "D:\Temp\0123456789\Test folder name with spaces\z." /nr /sp /cp %1 /cps %2 /ss%3 /sa "D:\Temp\0123456789\Test folder .%2"
# D:\Temp\0123456789\012345678901234567890123456789012345678901234567890123456789\Test folder name with spaces\z
"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:\MASM32\projects\cmdline.exe "D:\Program Files\EmEditor\EmEditor.exe" "D:\Temp\0123456789\012345678901234567890123456789012345678901234567890123456789\Test folder name with spaces\z." /nr .%2"
# D:\Temp\0123456789\012345678901234567890123456789012345678901234567890123456789\012345678901234567890123456789012345678901234567890123456789\Test folder name with spaces\z
"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:\MASM32\projects\cmdline.exe "D:\Program Files\EmEditor\EmEditor.exe" "D:\Temp\0123456789\012345678901234567890123456789012345678901234567890123456789\0123456789012345678901234567890123456.%2"
# D:\Temp\0123456789\012345678901234567890123456789012345678901234567890123456789\012345678901234567890123456789012345678901234567890123456789\012345678901234567890123456789012345678901234567890123456789\Test folder name with spaces\z
"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:\MASM32\projects\cmdline.exe "D:\Program Files\EmEditor\EmEditor.exe" "D:\Temp\0123456789\012345678901234567890123456789012345678901234567890123456789\0123456789012345678901234567890123456.%2"Сообщил о баге, заодно заметил важную вещь: суммарная длина комстроки, с которой запускается программа, при обрезании одинакова, т.е. где-то тотал упирается в какое-то внутреннее ограничение.
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
Еще баг, аналогичный предыдущему, причем здесь спихнуть вину на EmEditor точно не получится.
Речь вот об этом нововведении:Длина строки около 2000 символов. Так вот, при отработке команды производится попытка запустить новую копию Тотала, потому что ключ /o откусывается (для моих путей - до состояния ".../s /"). Стоит убрать любой /t-ключ, и все пучком.
MVV, моя команда изменения кодировки теперь работает отлично. То есть похоже, что граница ошибки просто сдвинулась с 1k символов на 2k, но при этом осталась. И похоже, дело не в %O. Это так?
Речь вот об этом нововведении:
(хотя, конечно, подобные команды работали и раньше, в том числе и у меня, но... не в таком количестве и не в связке с AskParam)history.txt писал(а):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
Код: Выделить всё
/u"Internet Explorer: {871C5380-42A0-1069-A2EA-08002B30309D}" /t"AutoPlay: {9C60DE1E-E5FC-40f4-A487-460851A8D915}" /t"Administrative Tools: {D20EA4E1-3957-11d2-A40B-0C5020524153}" /t"Libraries: {031E4825-7B94-4dc3-B131-E946B44C8DD5}" /t"Windows Firewall: {4026492F-2F69-46B8-B9BF-5654FC07E423}" /t"All Tasks: {ED7BA470-8E54-465E-825C-99712043E01C}" /t"All Control Panel Items: {21EC2020-3AEA-1069-A2DD-08002B30309D}" /t"Location and Other Sensors: {E9950154-C418-419e-A90A-20C5287AE24B}" /t"Credential Manager: {1206F5F1-0569-412C-8FEC-3204630DFB70}" /t"HomeGroup: {67CA7650-96E6-4FDD-BB43-A8E774F73A57}" /t"HomeGroup folder: {6785BFAC-9D2D-4be5-B7E2-59937E8FB80A}" /t"Games: {ED228FDF-9EA8-4870-83b1-96b02CFE0D52}" /t"Favorites: {323CA680-C24D-4099-B94D-446DD2D7249E}" /t"Computer: {20D04FE0-3AEA-1069-A2D8-08002B30309D}" /t"Recycle Bin: {645FF040-5081-101B-9F08-00AA002F954E}" /t"My Documents: {450D8FBA-AD25-11D0-98A8-0800361B1103}" /t"Recent Places: {22877a6d-37a1-461a-91b0-dbda5aaebc99}" /t"Public: {4336a54d-038b-4685-ab02-99bb52d3fb8b}" /t"Control Panel (Category): {26EE0668-A00A-44D7-9371-BEB064C98683}" /t"Folder Options: {6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}" /t"Tablet PC Settings: {80F3F1D5-FECA-45F3-BC32-752C152E456E}" /t"Font settings: {93412589-74D4-4E4E-AD0E-E0CB621440FD}" /t"Portable Devices: {35786D3C-B075-49b9-88DD-029876E11C01}" /t"Pen and Touch: {F82DF8F7-8B9F-442E-A48C-818EA735FF9B}" /t"Personalization: {ED834ED6-4B5A-4bfe-8F11-A626DCB6A921}" /t"Remote Desktop Connection: {241D7C96-F8BF-4F85-B01F-E2B043341A4B}" /t"Search: {2559a1f0-21d7-11d4-bdaf-00c04f60b9f0}" /t"Get Programs: {15eae92e-f17a-4431-9f28-805e482dafd4}" /t"Printers: {2227A280-3AEA-1069-A2DE-08002B30309D}" /t"Programs and Features: {7b81be6a-ce2b-4676-a29e-eb907a5126c5}" /t"Default Programs: {17cd9488-1228-4b2f-88ce-4298e93e0966}" /t"Desktop: {3080F90D-D7AD-11D9-BD98-0000947B0257}" /t"Speech Recognition: {58E3C745-D971-4081-9034-86E34B30836A}" /t"Default Location: {00C6D95F-329C-409a-81D7-C46C66EA7F33}" /p(h) %%COMMANDER_EXE%% /L=::"%%1" /s /t /oMVV, моя команда изменения кодировки теперь работает отлично. То есть похоже, что граница ошибки просто сдвинулась с 1k символов на 2k, но при этом осталась. И похоже, дело не в %O. Это так?
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Вахмурка
Остальное — пустые папки. Так стоит ли с длиной заморачиваться?
Из твоего списка толк есть только от:
cd ::{D20EA4E1-3957-11d2-A40B-0C5020524153} \\Администрирование (9.20 b1+)
cd ::{031E4825-7B94-4dc3-B131-E946B44C8DD5} \\Библиотеки
cd ::{ED7BA470-8E54-465E-825C-99712043E01C} \\Все задачи (9.20 b1+)
cd ::{21EC2020-3AEA-1069-A2DD-08002B30309D} cm_OpenControls
cd ::{ED228FDF-9EA8-4870-83b1-96b02CFE0D52} \\Игры
cd ::{323CA680-C24D-4099-B94D-446DD2D7249E} \\Избранное (9.20 b1+)
cd ::{20D04FE0-3AEA-1069-A2D8-08002B30309D} cm_OpenDrives
cd ::{645FF040-5081-101B-9F08-00AA002F954E} cm_OpenRecycled
cd ::{450D8FBA-AD25-11D0-98A8-0800361B1103} \\Мои документы
cd ::{4336a54d-038b-4685-ab02-99bb52d3fb8b} \\Общие
cd ::{26EE0668-A00A-44D7-9371-BEB064C98683} \\Панель управления
cd ::{7b81be6a-ce2b-4676-a29e-eb907a5126c5} \\Программы и компоненты (9.20 b1+)
cd ::{031E4825-7B94-4dc3-B131-E946B44C8DD5} \\Библиотеки
cd ::{ED7BA470-8E54-465E-825C-99712043E01C} \\Все задачи (9.20 b1+)
cd ::{21EC2020-3AEA-1069-A2DD-08002B30309D} cm_OpenControls
cd ::{ED228FDF-9EA8-4870-83b1-96b02CFE0D52} \\Игры
cd ::{323CA680-C24D-4099-B94D-446DD2D7249E} \\Избранное (9.20 b1+)
cd ::{20D04FE0-3AEA-1069-A2D8-08002B30309D} cm_OpenDrives
cd ::{645FF040-5081-101B-9F08-00AA002F954E} cm_OpenRecycled
cd ::{450D8FBA-AD25-11D0-98A8-0800361B1103} \\Мои документы
cd ::{4336a54d-038b-4685-ab02-99bb52d3fb8b} \\Общие
cd ::{26EE0668-A00A-44D7-9371-BEB064C98683} \\Панель управления
cd ::{7b81be6a-ce2b-4676-a29e-eb907a5126c5} \\Программы и компоненты (9.20 b1+)
Эти GUID на Win 7 вообще никуда не ведут:
cd ::{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}
cd ::{80F3F1D5-FECA-45F3-BC32-752C152E456E}
cd ::{F82DF8F7-8B9F-442E-A48C-818EA735FF9B}
cd ::{2559a1f0-21d7-11d4-bdaf-00c04f60b9f0}
cd ::{3080F90D-D7AD-11D9-BD98-0000947B0257}
cd ::{80F3F1D5-FECA-45F3-BC32-752C152E456E}
cd ::{F82DF8F7-8B9F-442E-A48C-818EA735FF9B}
cd ::{2559a1f0-21d7-11d4-bdaf-00c04f60b9f0}
cd ::{3080F90D-D7AD-11D9-BD98-0000947B0257}
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
Дело не в конкретных путях, а в возможных ошибках в AskParam (или в TC, что вероятнее)
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
Проверял - работает. Как и с кодировками ранее. А косяк оказался не в EmEditor'е и даже не в AskParam'е, а как раз в ТС
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Забавляет, что я эту строчку даже в поле параметров кнопки вставить не могу, она обрезается после "/s /".Вахмурка писал(а):Длина строки около 2000 символов.
Последний раз редактировалось MVV Сб май 19, 2018 12:02, всего редактировалось 2 раза.
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
2MVV
Я использовал em_команду.
Так ты воспроизвел проблему? Каковы первые впечатления?
Я использовал em_команду.
Так ты воспроизвел проблему? Каковы первые впечатления?
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
Тогда это баг, ибо
Зарепортишь на англофоруме?
Получается, что Тоталу все равно, откуда брать параметры - из *.bar или из usercmd.ini. Разве это логично?
Не знаю как у тебя, а у меня Win7x64, то есть явно не 2000.TC help писал(а):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)
Зарепортишь на англофоруме?
Получается, что Тоталу все равно, откуда брать параметры - из *.bar или из usercmd.ini. Разве это логично?
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Это с трудом можно назвать багом, это скорее старое ограничение. Сделал запрос.
А это как раз абсолютно логично, ведь смысл параметров одинаков.Получается, что Тоталу все равно, откуда брать параметры - из *.bar или из usercmd.ini. Разве это логично?