Амперсанд в имени файла несовместим с метасимволом !&
Амперсанд в имени файла несовместим с метасимволом !&
cat&dog.ext --> ассоциация с !& --> 'dog.ext' is not recognized as an internal or external command, operable program or batch file.
- HaRT
- Moderator
- Posts: 10866
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Амперсанд в имени файла несовместим с метасимволом !&
И при чём тут ассоциации Фара? Выполняю команду в
cmd.exe
— получаю такой же результат: Code: Select all
D:\>type cat&dog.txt
The system cannot find the file specified.
'dog.txt' is not recognized as an internal or external command,
operable program or batch file.
&
в cmd
является оператором последовательного выполнения команд. Если имя файла заключить в кавычки, то работает ожидаемо: Code: Select all
D:\>type "cat&dog.txt"
Cats ate dogs.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Амперсанд в имени файла несовместим с метасимволом !&
OK, пожалуй, изначально я не вполне удачно впихнул описание в одну строку, поэтому поясню. Тут же речь о другом. Можно и файл с пробелами привести как пример поведения cmd, но при использовании !& фар помещает имя файла с пробелами в кавычки (в отличие от !,!.! и прочих, которые требуют эксплицитного заключения метасимвола в кавычки в ассоциациях). Что вроде бы совершенно логично и ожидаемо, учитывая роль !&.
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
Амперсанд в имени файла несовместим с метасимволом !&
Сабж должен звучать как "фар не позволяет окавычивать имена в генерируемых списках по определённому критерию, поэтому получаемые списки иногда неюзабельны".
Могу предложить по аналогии с !@! добавить модификатор Q - "enclose names in quotes (unconditionally)".
И, соответственно, в !@! Q сделать тоже "unconditionally", а не "containing spaces".
Могу предложить по аналогии с !@! добавить модификатор Q - "enclose names in quotes (unconditionally)".
И, соответственно, в !@! Q сделать тоже "unconditionally", а не "containing spaces".
- HaRT
- Moderator
- Posts: 10866
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Амперсанд в имени файла несовместим с метасимволом !&
Горячо поддерживаю! А как это будет записываться в случае с
!&
? !&Q
? Просто иначе возникает синтаксическая неоднозначность.Кстати, вместо безусловного закавычивания можно проверять наличие не пробелов, а символов из
System.QuotedSymbols
— тогда поведение будет единообразным с той частью Фара. Впрочем, я не вижу у безусловного закавычивания недостатков, кроме потенциального нарушения совместимости каких-то экзотических сохранённых ассоциаций/команд.
Last edited by HaRT on Mon 02 Sep, 2019 23:55, edited 1 time in total.
Reason: Добавлен абзац про System.QuotedSymbols
Reason: Добавлен абзац про System.QuotedSymbols
Фар есть инструмент, а не нянька. © 2009 DrKnS
Амперсанд в имени файла несовместим с метасимволом !&
I, for one, буду безусловно welcomе любую реализацию, признанную кворумом оптимальной.
Амперсанд в имени файла несовместим с метасимволом !&
Спасибо!
Пара мелочей:
В русском хелпе:
опечатка:
В английском хелпе:
я бы переформулировал как
ну и заодно:
means -> denotes -- просто для единообразия c текстом выше
Пара мелочей:
В русском хелпе:
опечатка:
Code: Select all
^<wrap>Например, #!&Q# - имена помеченных файлов, заключеные в кавычки.
Code: Select all
^<wrap>Например, #!&Q# - имена помеченных файлов, заключенные в кавычки.
Code: Select all
^<wrap>For example, #!&Q# means the list of selected file names in quotes
Code: Select all
^<wrap>For example, #!&Q# denotes the list of selected file names, each enclosed in quotes.
Code: Select all
^<wrap>For example, #!@@AFQ!# means "name of file with the list of
selected file names, in ANSI encoding, include full pathnames, in quotes".
Code: Select all
^<wrap>For example, #!@@AFQ!# denotes "name of file containing the list of
selected file names, in ANSI encoding, with full pathnames, each enclosed in quotes".
- HaRT
- Moderator
- Posts: 10866
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Амперсанд в имени файла несовместим с метасимволом !&
Спасибо.
Но у меня радикальный вопрос: в каких случаях может потребоваться НЕ закавычивать имена файлов, когда они идут списком без разбиения на строки? Может, пока никто не успел привыкнуть, сделать закавычивание по умолчанию хотя бы для
!&
и !&~
, а модификатор (например q
) использовать для НЕ-закавычивания?Фар есть инструмент, а не нянька. © 2009 DrKnS
- zg
- zero-gravity
- Posts: 6035
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
- HaRT
- Moderator
- Posts: 10866
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Амперсанд в имени файла несовместим с метасимволом !&
Попытаюсь объяснить чуть более формально.
1. Я не знаю, когда может понадобиться в
!&
НЕ закавычивать. Но это не означает, что в каком-то (экзотическом) сценарии кавычки всё-таки что-то не сломают.2. Поскольку я уверен, что закавычивать в одной строке надо (почти?) всегда, я предлагаю сделать это вариантом по умолчанию, т.е. при отсутствии какого-либо модификатора.
3. Чтобы дать пользователем экзотических сценариев возможность всё-таки получить список незакавыченных имён файлов, я предлагаю добавить новый модификатор. И, в знак противопоставления модификатору
Q
(смысл которого в том, чтобы закавычивать) я предлагаю выбрать в качестве этого нового «отрицательного» модификатора q
(НЕ закавычивать).Так моя позиция стала понятнее?
Фар есть инструмент, а не нянька. © 2009 DrKnS
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
Амперсанд в имени файла несовместим с метасимволом !&
S.A., спасибо, поправил.
HaRT,
Единообразие - это хорошо, разнобой - это не очень хорошо.
А менять !@! уже не представляется возможным.
HaRT,
Q
в !&
сейчас единообразно с Q
в !@!
.Единообразие - это хорошо, разнобой - это не очень хорошо.
А менять !@! уже не представляется возможным.
- HaRT
- Moderator
- Posts: 10866
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Амперсанд в имени файла несовместим с метасимволом !&
Полностью согласен. Именно поэтому я в противоположность заглавной
Q
предлагаю строчную q
(я проверил, сейчас она не имеет специального значения) — подобно тому, как в регэкспах при обозначении классов символов заглавная и соответствующая строчная буква имеют противоположное значение (например, \w
и \W
). А изменить умолчание со старого, которое часто не работает, на новое, которое будет работать практически всегда, — это ли не полезное изменение?Т.е. я предлагаю так:
!&Q
— закавычивать;!&q
— НЕ закавычивать;!&
— закавычивать.Фар есть инструмент, а не нянька. © 2009 DrKnS
- HaRT
- Moderator
- Posts: 10866
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Амперсанд в имени файла несовместим с метасимволом !&
Предвосхищая довод о том, что, казалось бы, получится несоответствие в умолчаниях для
!@!
и !&
: так ведь у них и характер формируемых данных ощутимо разный. В одном случае каждое имя файла располагается на отдельной строке, т.ч. их между собой не спутаешь; а во втором случае имена с пробелами без закавычивания склеиваются в общее месиво. Поэтому разное умолчание в части закавычивания для этих двух случаев я считаю совершенно оправданным.Фар есть инструмент, а не нянька. © 2009 DrKnS