Неправильно подставляются метасимволы

Здесь можно сообщить о найденных багах в Far.
exp_1
Posts: 52
Joined: Fri 01 Jul, 2005 08:27

Неправильно подставляются метасимволы

Post by exp_1 »

Неправильно интерпретируются метасимволы.
Имею в меню команду:

Code: Select all

Горячая клавиша:
c
Метка:
Between Panel Bin
------------------------
Команды:
fc /b "!\!.!" "!#!\!.!"
pause
Имею на панелях:

Code: Select all

гм============== D:\1 =========T======¬гм====== Временная панель [0] ===17:48
¦..                            ¦ Вверх¦¦..                         ¦ <Вверх>¦
¦1                             ¦ ПапкদC:\Program Files\Far\2008\F}  675840¦
¦Far.exe                       ¦675840¦¦C:\Program Files\Far\Far.ex}  675840¦
¦far.map                       ¦331443¦¦C:\Program Files\Far\1999\F}  675840¦
¦FarEng.hlf                    ¦156489¦¦C:\Program Files\Far\1973\F}  671744¦
¦FarRus.hlf                    ¦165246¦¦C:\Program Files\Far\1962\F}  671744¦
¦FarEng.lng                    ¦ 29627¦¦C:\Program Files\Far\1812\F}  675840¦
¦FarRus.lng                    ¦ 32520¦¦C:\Program Files\Far\1634\F}  840192¦
¦------------------------------+------¦¦---------------------------+--------¦
¦Far.exe         675840 28.06.05 21:27¦¦1634\Far.exe  840,192 08.04.03 22:51¦
L=== 1,458,434,048 байтов свободно ===-L== 1,465,683,968 байтов свободно ===-
D:\1>
1Левая  2Правая 3Смотр. 4Редак. 5Печать 6       7Искать 8Истор  9Видео
Когда курсор слева, то эта команда даёт:
D:\1>fc /b "D:\1\Far.exe" "C:\Program Files\Far\1634\C:\Program Files\Far\1634\Far.exe"
Сравнение файлов D:\1\Far.exe и C:\Program Files\Far\1634\C:\Program Files\Far\1634\Far.exe
FC: не удается открыть C:\Program Files\Far\1634\C:\Program Files\Far\1634\Far.exe - Файл либо папка н
е существует

Когда справа, то:
C:\Program Files\Far\1634>fc /b "C:\Program Files\Far\1634\Far.exe" "Far.exe"
Сравнение файлов C:\Program Files\Far\1634\Far.exe и Far.exe
FC: различия не найдены


В обоих случая это неверное поведение, поскольку в обоих случаях должно быть:
Сравнение файлов D:\1\Far.exe и C:\Program Files\Far\1634\Far.exe

В 1.70 beta 5 build 1634 всё работает правильно.

Начиная с 1.70 alpha 6 build 1812 и до 1.70 alpha 6 build 2008 присутствует ошибка.
Last edited by HaRT on Thu 13 Jan, 2022 14:09, edited 1 time in total.
Reason: Обобщён заголовок Темы
User avatar
t-rex
Страшный и ужасный
Posts: 4910
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 8 times
Contact:

Post by t-rex »

Такс, исправил.
kondrik
Posts: 139
Joined: Tue 29 Mar, 2005 13:30
Has thanked: 2 times

Post by kondrik »

Чуть я не по теме но лучше сравнивать фалы и директории с помощью Beyond Compare, а fc - на крайняк если нет иного.
User avatar
4ekucT
Posts: 507
Joined: Tue 05 Apr, 2005 23:44
Location: Беларусь, Минск

Post by 4ekucT »

kondrik wrote:Чуть я не по теме но лучше сравнивать фалы и директории с помощью Beyond Compare, а fc - на крайняк если нет иного.
Попробывал, сравнил результаты с Araxis merge. Вывод - Araxis merge круче на порядок!
Roy
Posts: 51
Joined: Sat 02 Jul, 2005 00:08

Post by Roy »

User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Некоректная подстановка метасимвола !\

Post by Smitis »

Допустим, в текущей папке есть папки "1", "2" и "3". В каждой из них есть файл x.dat, т.е. имеем
1\x.dat
2\x.dat
3\x.dat

Запускаем поиск файла x.dat (F7), помещаем результат на временную панель (3 найденных файла). Помечаем первые два (INS), курсор оставляем на третьем.
Выполняем через Gtrl-G команду echo !\ !\!.!
Получаем результат, примерно такой (в моём случае):
C:\Temp\w\3\ C:\Temp\w\1\x.dat
C:\Temp\w\3\ C:\Temp\w\2\x.dat
Видим, что вместо первого метасимвола !\ был подставлен путь к файлу под курсором. Вместо второго метасимвола !\ был подставлен путь к обрабатываемому командой Ctrl-G файлу.
Похоже, ФАР обрабатывает !\!.! как один метасимвол, а не как метасимволы !\ и !.!
В любом случае было бы логично всегда подставлять вместо !\ путь к текущему обрабатываемому файлу.
FAR1 и FAR2 ведут себя одинаково.

П.С.
Надо бы и !: проверить...
Разум когда-нибудь победит.
User avatar
SlashNet
Posts: 638
Joined: Fri 20 Mar, 2009 09:43
Location: Львов
Has thanked: 16 times
Been thanked: 16 times

Некоректная подстановка метасимволов

Post by SlashNet »

Баг на ту же тему. В наличии уже давно.
Имеем файл с восклицательным знаком в имени. (например "УРА!!!.txt"). Конструкция "!\!.!" передает имя файла без него. (программе передается "УРА.txt"). То же самое, если восклицательный знак присутствует в пути.
ədиw wo⊥є ʚ o⊥ʎнdəʚədəu əɔʚ
wolf
Posts: 1030
Joined: Fri 08 Apr, 2005 12:54
Location: Moscow

Re: Некоректная подстановка метасимволов

Post by wolf »

SlashNet wrote:Баг на ту же тему. В наличии уже давно.
Имеем файл с восклицательным знаком в имени. (например "УРА!!!.txt"). Конструкция "!\!.!" передает имя файла без него.
научи как повторить.
А то проверил на echo "!\!.!" - "УРА!!!.txt" и печатается.
build 1293 x86
ошибка — считать, что фар для пользователей. (с) zg
User avatar
SlashNet
Posts: 638
Joined: Fri 20 Mar, 2009 09:43
Location: Львов
Has thanked: 16 times
Been thanked: 16 times

Re: Некоректная подстановка метасимвола !\

Post by SlashNet »

Народ. Каюсь. Не там ошибка была. ФАР нормально работает. Извините за беспокойство.

Всю воду мутит гнусный Майкрософт.
В батнике стояла команда "setlocal enabledelayedexpansion" - закомментировал все забегало нормально, а с ней - глотает знаки.
ədиw wo⊥є ʚ o⊥ʎнdəʚədəu əɔʚ
lvmm
Posts: 119
Joined: Thu 15 Apr, 2021 14:31
Has thanked: 8 times
Been thanked: 3 times

!&

Post by lvmm »

Если пометить несколько файлов с разными расширениями, нажать enter на одном из них с расширением, допустим, mp3, и для mp3 файлов в commands-file associations определена своя ассоциация с параметром !&, то программе будут переданы все помеченные файлы со всеми расширениями, а не только *.mp3. Более того, если нажать enter на непомеченном файле с расширением mp3, то будет запущена программа для mp3, а список переданных ей файлов даже не будет содержать того файла, который вызвал ее запуск. С одной стороны, что просили, то и получили, но с другой - ну ведь неправильно же.
Dzirt2005
Posts: 327
Joined: Fri 29 Feb, 2008 12:11
Been thanked: 10 times

!&

Post by Dzirt2005 »

lvmm wrote: Thu 13 Jan, 2022 10:34 С одной стороны, что просили, то и получили, но с другой - ну ведь неправильно же.
И с каких это пор "получили именно то, что просили" считается неправильным? Мета символ означает "список помеченных файлов" и делает ровно то, что и должен. Что именно здесь "неправильно"?
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

Неправильно подставляются метасимволы

Post by buniak_a_h »

Dzirt2005,
lvmm
Posts: 119
Joined: Thu 15 Apr, 2021 14:31
Has thanked: 8 times
Been thanked: 3 times

Неправильно подставляются метасимволы

Post by lvmm »

Dzirt2005, ну если ты этого и правда не понимаешь, то неправильно то, что помечены файлы одного типа, а при этом запускается обработчик, определенный для файлов другого типа. Строго говоря, такой подход тоже может быть полезен ("архиватор" - zip !.! !&), но в ситуации "плеер" это таки неправильно. Наверное, оптимально следующее поведение: если в строке есть !.! или !, запускать по текущему файлу, а если только !& - по первому помеченному и опционально фильтровать список файлов.
fps
Posts: 267
Joined: Wed 20 Apr, 2005 06:39
Has thanked: 27 times
Been thanked: 14 times

Неправильно подставляются метасимволы

Post by fps »

lvmm wrote: Tue 18 Jan, 2022 15:15 такой подход тоже может быть полезен ("архиватор" - zip !.! !&), но в ситуации "плеер" это таки неправильно
И вы видимо можете описать, чем эти две ситуации формально отличаются?
И, кстати, что значит "по первому помеченному"? Первый - это верхний в панели, или тот который вы отметили первым или что-то еще?
Last edited by fps on Tue 18 Jan, 2022 16:00, edited 1 time in total.
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

Неправильно подставляются метасимволы

Post by buniak_a_h »

lvmm wrote: Tue 18 Jan, 2022 15:15 в ситуации "плеер" это таки неправильно
Это круто! Т.е. ФАР должен знать, для каких расширений файлов настроенное приложение имеет смысл, а для каких - нет?
Я так понимаю, что Вы бы хотели проверить, есть ли среди отмеченных файлов те, для которых указанная команда имеет смысл. И если таких нет - применять команду к текущему файлу. Интересно… А если у меня в качестве плеера выбран, например, XNView, то как ФАР должен узнать, что надо показывать?
Post Reply

Return to “Глюки и баги”