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

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

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

Post by AHtoDISrFXZcbmens97y » Sat 26 Oct, 2019 20:04

Есть два файла. Первый имеет длинное имя 1234567890 , короткое имя 123456~2 . Второй имеет длинное и короткое имя 123456~1 . При копировании этих двух файлов первый автоматически меняет своё короткое имя на 123456~1 , и второй файл после этого не может скопироваться, так как "Файл уже существует". Есть ли возможность копировать короткое имя вместе с файлом и исправить данную ошибку?

Shtirla
Posts: 115
Joined: Wed 04 Mar, 2009 20:09
Has thanked: 9 times
Been thanked: 2 times

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

Post by Shtirla » Mon 28 Oct, 2019 09:28

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

как вариант xcopy /N * C:\111\222\
но с потерей длинных имен, и только если всю целевую папку перетаскивать, по отдельности точно такое же поведение

Shtirla
Posts: 115
Joined: Wed 04 Mar, 2009 20:09
Has thanked: 9 times
Been thanked: 2 times

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

Post by Shtirla » Mon 28 Oct, 2019 09:31

Еще вариант сначала копировать некорректные (потеряные) длинные имена, хотяб по наличию тильды в имени, а потом длинные

AHtoDISrFXZcbmens97y
Posts: 9
Joined: Sat 26 Oct, 2019 19:54

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

Post by AHtoDISrFXZcbmens97y » Mon 28 Oct, 2019 10:34

Насчёт того, что FAR "не виноват": обычное стандартое копирование Windows (которое поместить в буфер обмена - вставить из буфера обмена) прекрасно работает с папками, в которых есть такие файлы, и не создаёт никаких ошибок (собственно, такое копирование можно делать даже находясь в FAR). Точно так же как безошибочно работает и копирование в Total commander. Так что пути решения данной проблемы, очевидно, существуют, но в FAR они не реализованы. Вот я и решил обратиться сюда: может быть кому-то захочется улучшить эту программу.

User avatar
DrKnS
Posts: 5437
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 6 times
Been thanked: 254 times

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

Post by DrKnS » Mon 28 Oct, 2019 11:16

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

AHtoDISrFXZcbmens97y
Posts: 9
Joined: Sat 26 Oct, 2019 19:54

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

Post by AHtoDISrFXZcbmens97y » Mon 28 Oct, 2019 11:43

Да, уверен. Более того, могу объяснить, что там происходит. При копировании файла в случае, если файл имеет точно такое же КОРОТКОЕ имя, как и файл, который уже находится в той папке, в которую копируют, но при этом ДЛИННЫЕ имена файлов разные, происходит изменение КОРОТКОГО имени того файла, который уже находится в папке - ему даётся новое имя (не ~1, а ~2), и никакой ошибки в итоге не происходит. В принципе, можно делать так. А можно просто копировать файлы вместе с их короткими именами (во всяком случае, я не вижу в этом ничего принципиально невозможного, хотя пока и не видел такого на практике).

User avatar
DrKnS
Posts: 5437
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 6 times
Been thanked: 254 times

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

Post by DrKnS » Mon 28 Oct, 2019 12:19

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 » Mon 28 Oct, 2019 13:18

Я вас действительно не совсем понимаю, особенно при чём тут обиды, но единственное - могу подтвердить, что я копирую-вставляю из-под администраторского аккаунта Windows XP SP3. И всё работает именно так, как я описываю. Если система видит тот конфликт коротких имён, который я описываю - она изменяет короткое имя у того файла, который уже находится в папке, в которую копируют. Ну вот даже не знаю, как вас убедить, что я вам говорю правду.

AHtoDISrFXZcbmens97y
Posts: 9
Joined: Sat 26 Oct, 2019 19:54

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

Post by AHtoDISrFXZcbmens97y » Mon 28 Oct, 2019 15:27

Но что интересно - всё прекрасно работает и тогда, когда я зашёл в систему под гостевым аккаунтом. Так что почему не работает у вас - я совсем-совсем не понимаю. Видимо, какие-то особенности вашей операционной системы.

User avatar
HaRT
Moderator
Posts: 9170
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 90 times
Been thanked: 177 times

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

Post by HaRT » Mon 28 Oct, 2019 17:17

(Выделение моё)
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: 5667
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 115 times
Contact:

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

Post by zg » Mon 28 Oct, 2019 18:05

xp всегда вначале копирует файлы с коротким именем в котором есть тильда. если это не помогает, файл с совпадающим коротким именем переименовывается во что-то типа 1.tmp, новый файл копируется, 1.tmp переименовывается обратно. в поздних версиях это видимо убрали.

AHtoDISrFXZcbmens97y
Posts: 9
Joined: Sat 26 Oct, 2019 19:54

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

Post by AHtoDISrFXZcbmens97y » Mon 28 Oct, 2019 18:38

Ну вот было бы прекрасно, если бы FAR научился делать то, что умеет делать Windows XP (и разучились делать последующие операционные системы Microsoft).

Shtirla
Posts: 115
Joined: Wed 04 Mar, 2009 20:09
Has thanked: 9 times
Been thanked: 2 times

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

Post by Shtirla » Wed 30 Oct, 2019 06:46

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

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

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

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

Хотя макрос или плагин для работы с короткими именами наверное имел бы академический интерес.

AHtoDISrFXZcbmens97y
Posts: 9
Joined: Sat 26 Oct, 2019 19:54

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

Post by AHtoDISrFXZcbmens97y » Wed 30 Oct, 2019 10:37

а) включение "системной функции копирования" никак эту проблему не убирает. Единственный способ копирования в FAR - это копировать и вставлять через буфер, что внутри FARa тоже можно делать (кстати, есть даже плагин с макросом, которые облегчают всё это). Так что катастрофической проблемы у меня никакой нет, во всяком случае, пока использовать Windows XP. А эту тему я создал скорее для того, чтобы разработчики обратили на этот вопрос внимание. И да, в более новых операционных системах эту проблему, как видим, решить намного сложнее.
б) Данная проблема, как по мне, может встречаться не только у меня (и я сам её не выдумал, она возникла сама по себе). Никакие вирусы тут абсолютно ни при чём - есть множество разных программ, которые сами сохраняют файлы под короткими именами (т.е. убирают длинные имена вовсе), а потом в одной и той же папке оказываются вот такие вот файлы, которые в дальнейшем конфликтуют друг с другом при копировании.
в) пожалуйста, перечитайте то, что написал zg. По-моему, он прекрасно описал алгоритм, как Windows XP решает эту проблему без всякого повышения привилегий (и да, всё это работает и под гостевым аккаунтом Windows XP)

User avatar
HaRT
Moderator
Posts: 9170
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 90 times
Been thanked: 177 times

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

Post by HaRT » Wed 30 Oct, 2019 13:14

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

AHtoDISrFXZcbmens97y
Posts: 9
Joined: Sat 26 Oct, 2019 19:54

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

Post by AHtoDISrFXZcbmens97y » Fri 15 Nov, 2019 12:07

Shtirla wrote:
Wed 30 Oct, 2019 06:46
видимо поэтому тотал норм работает, они не заморачивались такими мелочами как собственная обработка копирования.
Обнаружил, что и это ваше утверждение ошибочно. У Total своя собственная обработка копирования. Обнаружил я это благодаря тому, что кое-где она глючит - там, где системное копирование через буфер не глючит :-)
Но в плане обработки конфликтов коротких имён Total работает безупречно, при этом это у него реализовано самостоятельно, независимо от реализации в операционной системе, так что по всей видимости это у него будет работать безупречно и в более новых операционных системах, а не только в Windows XP. Я в этом практически уверен, но желающие могут проверить.

Post Reply

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