Ошибка при копировании файлов

Здесь можно сообщить о найденных багах в Far.
AHtoDISrFXZcbmens97y
Posts: 9
Joined: Sat 26 Oct, 2019 19:54

Ошибка при копировании файлов

Post by AHtoDISrFXZcbmens97y »

Есть два файла. Первый имеет длинное имя 1234567890 , короткое имя 123456~2 . Второй имеет длинное и короткое имя 123456~1 . При копировании этих двух файлов первый автоматически меняет своё короткое имя на 123456~1 , и второй файл после этого не может скопироваться, так как "Файл уже существует". Есть ли возможность копировать короткое имя вместе с файлом и исправить данную ошибку?
Shtirla
Posts: 117
Joined: Wed 04 Mar, 2009 20:09
Has thanked: 10 times
Been thanked: 2 times

Ошибка при копировании файлов

Post by Shtirla »

Забавная бага, не думаю что здесь фар виноват.
использование ~ в именах не совсем корректно, это древний костыль для обхода конфликтов с длинными именами для старых ФС

как вариант xcopy /N * C:\111\222\
но с потерей длинных имен, и только если всю целевую папку перетаскивать, по отдельности точно такое же поведение
Shtirla
Posts: 117
Joined: Wed 04 Mar, 2009 20:09
Has thanked: 10 times
Been thanked: 2 times

Ошибка при копировании файлов

Post by Shtirla »

Еще вариант сначала копировать некорректные (потеряные) длинные имена, хотяб по наличию тильды в имени, а потом длинные
AHtoDISrFXZcbmens97y
Posts: 9
Joined: Sat 26 Oct, 2019 19:54

Ошибка при копировании файлов

Post by AHtoDISrFXZcbmens97y »

Насчёт того, что FAR "не виноват": обычное стандартое копирование Windows (которое поместить в буфер обмена - вставить из буфера обмена) прекрасно работает с папками, в которых есть такие файлы, и не создаёт никаких ошибок (собственно, такое копирование можно делать даже находясь в FAR). Точно так же как безошибочно работает и копирование в Total commander. Так что пути решения данной проблемы, очевидно, существуют, но в FAR они не реализованы. Вот я и решил обратиться сюда: может быть кому-то захочется улучшить эту программу.
User avatar
DrKnS
Posts: 5673
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 9 times
Been thanked: 310 times

Ошибка при копировании файлов

Post by DrKnS »

AHtoDISrFXZcbmens97y wrote: Mon 28 Oct, 2019 10:34обычное стандартое копирование Windows (которое поместить в буфер обмена - вставить из буфера обмена) прекрасно работает с папками, в которых есть такие файлы, и не создаёт никаких ошибок
Вы уверены? Попробуйте изменить сортировку на обратную или копировать файлы по одному - сначала длинный, потом короткий.
AHtoDISrFXZcbmens97y
Posts: 9
Joined: Sat 26 Oct, 2019 19:54

Ошибка при копировании файлов

Post by AHtoDISrFXZcbmens97y »

Да, уверен. Более того, могу объяснить, что там происходит. При копировании файла в случае, если файл имеет точно такое же КОРОТКОЕ имя, как и файл, который уже находится в той папке, в которую копируют, но при этом ДЛИННЫЕ имена файлов разные, происходит изменение КОРОТКОГО имени того файла, который уже находится в папке - ему даётся новое имя (не ~1, а ~2), и никакой ошибки в итоге не происходит. В принципе, можно делать так. А можно просто копировать файлы вместе с их короткими именами (во всяком случае, я не вижу в этом ничего принципиально невозможного, хотя пока и не видел такого на практике).
User avatar
DrKnS
Posts: 5673
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 9 times
Been thanked: 310 times

Ошибка при копировании файлов

Post by DrKnS »

AHtoDISrFXZcbmens97y wrote: Mon 28 Oct, 2019 11:43Да, уверен
Я просто понажимал CtrlC/CtrlV в Explorer, понаблюдал аналогичные диалоги "файл уже существует" и пока что уверен в обратном.
могу объяснить, что там происходит ... происходит изменение КОРОТКОГО имени
The caller of this function must have the SE_RESTORE_NAME privilege - эта роскошь по умолчанию доступна только администраторам. Если вы копируете как обычный пользователь - без обид, но, подозреваю, вы не совсем понимаете, что там происходит.
AHtoDISrFXZcbmens97y
Posts: 9
Joined: Sat 26 Oct, 2019 19:54

Ошибка при копировании файлов

Post by AHtoDISrFXZcbmens97y »

Я вас действительно не совсем понимаю, особенно при чём тут обиды, но единственное - могу подтвердить, что я копирую-вставляю из-под администраторского аккаунта Windows XP SP3. И всё работает именно так, как я описываю. Если система видит тот конфликт коротких имён, который я описываю - она изменяет короткое имя у того файла, который уже находится в папке, в которую копируют. Ну вот даже не знаю, как вас убедить, что я вам говорю правду.
AHtoDISrFXZcbmens97y
Posts: 9
Joined: Sat 26 Oct, 2019 19:54

Ошибка при копировании файлов

Post by AHtoDISrFXZcbmens97y »

Но что интересно - всё прекрасно работает и тогда, когда я зашёл в систему под гостевым аккаунтом. Так что почему не работает у вас - я совсем-совсем не понимаю. Видимо, какие-то особенности вашей операционной системы.
User avatar
HaRT
Moderator
Posts: 9524
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 109 times
Been thanked: 228 times

Ошибка при копировании файлов

Post by HaRT »

(Выделение моё)
AHtoDISrFXZcbmens97y wrote: Mon 28 Oct, 2019 15:27 какие-то особенности вашей операционной системы
AHtoDISrFXZcbmens97y wrote: Mon 28 Oct, 2019 13:18 Windows XP SP3
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
zg
zero-gravity
Posts: 5861
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 155 times
Contact:

Ошибка при копировании файлов

Post by zg »

xp всегда вначале копирует файлы с коротким именем в котором есть тильда. если это не помогает, файл с совпадающим коротким именем переименовывается во что-то типа 1.tmp, новый файл копируется, 1.tmp переименовывается обратно. в поздних версиях это видимо убрали.
AHtoDISrFXZcbmens97y
Posts: 9
Joined: Sat 26 Oct, 2019 19:54

Ошибка при копировании файлов

Post by AHtoDISrFXZcbmens97y »

Ну вот было бы прекрасно, если бы FAR научился делать то, что умеет делать Windows XP (и разучились делать последующие операционные системы Microsoft).
Shtirla
Posts: 117
Joined: Wed 04 Mar, 2009 20:09
Has thanked: 10 times
Been thanked: 2 times

Ошибка при копировании файлов

Post by Shtirla »

Ну если в ХР все норм, попробуйте использовать "системную функцию копирования" в настройках, видимо поэтому тотал норм работает, они не заморачивались такими мелочами как собственная обработка копирования.

вообще не понятно, как такой функционал мог бы понадобиться, скорее редкое исключение, ну или возможно какое то вирусописательство)

но если в 7ке+ изменение коротких имен только с повышением привилегий, то кроме костыля ничего нормального не получится.
Конфликт то не изза того что фар пишет неправильное короткое имя, а изза того что вы передаете длинное имя, система САМА! дает ему короткое на основании длинного, т.е. генерирует по определенным правилам, а когда вы отдаете второй файл в ту же папку, он уже имеет такое же имя, и даже если система и пытается генерировать, то по этим правилам генерируется то же самое имя. Вот и конфликт, это к мелкомягким.

попробуйте то же реализовать например батником любым, и поймете что не так все просто.

Хотя макрос или плагин для работы с короткими именами наверное имел бы академический интерес.
AHtoDISrFXZcbmens97y
Posts: 9
Joined: Sat 26 Oct, 2019 19:54

Ошибка при копировании файлов

Post by AHtoDISrFXZcbmens97y »

а) включение "системной функции копирования" никак эту проблему не убирает. Единственный способ копирования в FAR - это копировать и вставлять через буфер, что внутри FARa тоже можно делать (кстати, есть даже плагин с макросом, которые облегчают всё это). Так что катастрофической проблемы у меня никакой нет, во всяком случае, пока использовать Windows XP. А эту тему я создал скорее для того, чтобы разработчики обратили на этот вопрос внимание. И да, в более новых операционных системах эту проблему, как видим, решить намного сложнее.
б) Данная проблема, как по мне, может встречаться не только у меня (и я сам её не выдумал, она возникла сама по себе). Никакие вирусы тут абсолютно ни при чём - есть множество разных программ, которые сами сохраняют файлы под короткими именами (т.е. убирают длинные имена вовсе), а потом в одной и той же папке оказываются вот такие вот файлы, которые в дальнейшем конфликтуют друг с другом при копировании.
в) пожалуйста, перечитайте то, что написал zg. По-моему, он прекрасно описал алгоритм, как Windows XP решает эту проблему без всякого повышения привилегий (и да, всё это работает и под гостевым аккаунтом Windows XP)
User avatar
HaRT
Moderator
Posts: 9524
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 109 times
Been thanked: 228 times

Ошибка при копировании файлов

Post by HaRT »

Фар есть инструмент, а не нянька. © 2009 DrKnS
Post Reply

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