View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0003407 | Far Manager | Command Line/Execute | public | 2017-03-14 12:31 | 2017-03-14 17:53 |
Reporter | Andys | Assigned To | DrKnS | ||
Priority | normal | Severity | major | Reproducibility | always |
Status | closed | Resolution | no change required | ||
Platform | x86 | OS | Windows | OS Version | 10 |
Product Version | 3.0 | ||||
Summary | 0003407: Проблема с запуском из командной строки и аргументами в кавычках (файлы с пробелами) | ||||
Description | Воспроизводится для данной конкретной программы и ОС: Windows 7 x64, Windows 10 x64, Server 2012 r2 x64. Пока наткнулся только на одну такую програму - AlReader2 (http://www.alreader.com/downloads.php?lang=en версия для виндовс, от 2011 года) При запуске из фара версии 4545 проблем нет, обнаружено при апгрейде до фара 4900 | ||||
Steps To Reproduce | 1. скачал, распаковал FAR ночную сборку Far30b4915.x86.20170314 2. в ней вошел в папку с AlReader2, запустил просмотр файла из комстроки: AlReader2.exe readme.txt Просмотр открылся нормально, закрыл читалку 3. файл readme.txt переименовал с пробелом: "read me.txt" 4. заново открываю из комстроки: AlReader2.exe "read me.txt" Файл не открывается, читалка запустилась в режиме будто я запускал её без аргументов 5. другая попытка: AlReader2.exe read me.txt Файл открылся | ||||
Additional Information | На первый взгляд предполагаю, что в фаре изменилась обработка аргументов между версиями 4545 и 4900 и какая-то отдельная виндовая функция (поскольку с другими прогами я проблем не наблюдал) перестала понимать переданные ей аргументы. Ниже приложу скрины из процмона на эвент открытия файла, на них слева - alreader2, запущенный из фара 4915, справа - тот же alreader2, запущенный из фара 4545. С виду все параметры одинаковые, но разный результат операции, в итоге одна команда в разных версиях приводит к разным результатам | ||||
Tags | No tags attached. | ||||
Build | 0 | ||||
|
|
|
|
|
|
|
*пип*. Прошу прощения, перепутал стороны, на скринах слева - alreader2, запущенный из фара 4545, справа - запущенный из фара 4915 Также, для более понятного описания: пункт 2, "в ней вошел в папку с AlReader2", следует понимать, что я запустил фар 4915 и в нем уже пошел запускать alreader, также только что скачанный (для чистоты эксперимента) |
|
Вы запускаете 'AlReader2.exe "read me.txt"' или 'AlReader2.exe "read me.txt"<ПРОБЕЛ>'? |
|
Вручную я ничего не набирал, все вставлялось по Ctrl+Enter Я вначале нажал, потом скопировал/вставил всё содержимое комстроки как они было на момент запуска |
|
А точнее, проверил по истории команд, действительно есть пробел. Типа новая фича для тех, кто пожаловался что после вставления имени файла надо ещё добавить пробел, чтобы продолжить набирать команду без спейса? |
|
Я понимаю, что вы нажимали Ctrl+Enter, отсюда и вопрос. Сотрите последний пробел и попробуйте ещё раз. |
|
С удаленным пробелом работает нормально в 4915; Проверил также на старой версии 4545 в итоге мое предположение насчет фичи было неверным Тест: 1. исходная комстрока для обоих случаев: 'AlReader2.exe "read me.txt" ' 2. проверка какая именно комстрока в списке процессов (плагин фара, копировалась command line от начала до позиции по кнопке End) 4545: '"Y:\Download\AlReader2.win32.ru\AlReader2.exe" "read me.txt"' 4915: '"Y:\Download\AlReader2.win32.ru\AlReader2.exe" "read me.txt" ' т.е. новая версия уже не удаляет конечные пробелы |
|
Это не новая фича, Ctrl+Enter вставлял пробел всегда. Когда-то Far при запуске обрезал конечные пробелы, где-то между 4545 и 4900 это было убрано, т. к.: - это бессмысленно - в любых адекватных приложениях всё должно работать что с пробелами, что без; - другие (например, cmd.exe) ничего не обрезают. В AlReader, видимо, навелосипедили свой парсер комстроки вместо того, чтобы воспользоваться системным, и навелосипедили не совсем правильно. Думаю, уместнее будет написать об этом авторам AlReader, а в качестве workaround'a можно написать батник вида "start AlReader2.exe %*" и запускать уже его. |
|
хех Можно это как опцию сделать в конфиге или в ини-файле? Потому что автору я уже писал давно и много, в основном с просьбами открыть код раз он сам его не дорабатывает. Из читалок это единственная, которую я знаю, которая букмарки может сохранять в файле _в той же папке_ что и книжка (можно перемещать куда хочешь и синхронизировать чем хочешь) и читает все распространенные форматы |
|
Я не отрицаю достоинства читалки, но опция "резать пробелы или нет" это очень явный костыль. Опция "добавлять пробел при Ctrl+Enter или нет" имеет больше смысла, но вы её вполне можете сделать сами макросом вида CtrlEnter = "CtrlEnter Backspace", например. |
|
Ну тогда ладно, лучше сделаю костыль-обертку для читалки, которая будет парсить строку и потом уже запускать читалку Можно закрыть с решением что "это не баг" |
Date Modified | Username | Field | Change |
---|---|---|---|
2017-03-14 12:31 | Andys | New Issue | |
2017-03-14 12:31 | Andys | File Added: 1-event.PNG | |
2017-03-14 12:31 | Andys | File Added: 2-process.PNG | |
2017-03-14 12:32 | Andys | File Added: 3-stack.PNG | |
2017-03-14 12:34 | Andys | Note Added: 0015265 | |
2017-03-14 12:39 | Andys | Note Edited: 0015265 | |
2017-03-14 12:52 | DrKnS | Note Added: 0015266 | |
2017-03-14 12:52 | DrKnS | Note Edited: 0015266 | |
2017-03-14 13:21 | Andys | Note Added: 0015267 | |
2017-03-14 13:23 | Andys | Note Added: 0015268 | |
2017-03-14 13:23 | DrKnS | Note Added: 0015269 | |
2017-03-14 13:40 | Andys | Note Added: 0015270 | |
2017-03-14 13:41 | DrKnS | Note Added: 0015271 | |
2017-03-14 13:48 | Andys | Note Added: 0015272 | |
2017-03-14 14:03 | DrKnS | Note Added: 0015273 | |
2017-03-14 17:22 | Andys | Note Added: 0015274 | |
2017-03-14 17:53 | DrKnS | Build | => 0 |
2017-03-14 17:53 | DrKnS | Status | new => closed |
2017-03-14 17:53 | DrKnS | Assigned To | => DrKnS |
2017-03-14 17:53 | DrKnS | Resolution | open => no change required |