Ошибка при копировании файлов
-
- Posts: 9
- Joined: Sat 26 Oct, 2019 19:54
Ошибка при копировании файлов
Есть два файла. Первый имеет длинное имя 1234567890 , короткое имя 123456~2 . Второй имеет длинное и короткое имя 123456~1 . При копировании этих двух файлов первый автоматически меняет своё короткое имя на 123456~1 , и второй файл после этого не может скопироваться, так как "Файл уже существует". Есть ли возможность копировать короткое имя вместе с файлом и исправить данную ошибку?
Ошибка при копировании файлов
Забавная бага, не думаю что здесь фар виноват.
использование ~ в именах не совсем корректно, это древний костыль для обхода конфликтов с длинными именами для старых ФС
как вариант xcopy /N * C:\111\222\
но с потерей длинных имен, и только если всю целевую папку перетаскивать, по отдельности точно такое же поведение
использование ~ в именах не совсем корректно, это древний костыль для обхода конфликтов с длинными именами для старых ФС
как вариант xcopy /N * C:\111\222\
но с потерей длинных имен, и только если всю целевую папку перетаскивать, по отдельности точно такое же поведение
-
- Posts: 9
- Joined: Sat 26 Oct, 2019 19:54
Ошибка при копировании файлов
Насчёт того, что FAR "не виноват": обычное стандартое копирование Windows (которое поместить в буфер обмена - вставить из буфера обмена) прекрасно работает с папками, в которых есть такие файлы, и не создаёт никаких ошибок (собственно, такое копирование можно делать даже находясь в FAR). Точно так же как безошибочно работает и копирование в Total commander. Так что пути решения данной проблемы, очевидно, существуют, но в FAR они не реализованы. Вот я и решил обратиться сюда: может быть кому-то захочется улучшить эту программу.
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
Ошибка при копировании файлов
Вы уверены? Попробуйте изменить сортировку на обратную или копировать файлы по одному - сначала длинный, потом короткий.AHtoDISrFXZcbmens97y wrote: ↑Mon 28 Oct, 2019 10:34обычное стандартое копирование Windows (которое поместить в буфер обмена - вставить из буфера обмена) прекрасно работает с папками, в которых есть такие файлы, и не создаёт никаких ошибок
-
- Posts: 9
- Joined: Sat 26 Oct, 2019 19:54
Ошибка при копировании файлов
Да, уверен. Более того, могу объяснить, что там происходит. При копировании файла в случае, если файл имеет точно такое же КОРОТКОЕ имя, как и файл, который уже находится в той папке, в которую копируют, но при этом ДЛИННЫЕ имена файлов разные, происходит изменение КОРОТКОГО имени того файла, который уже находится в папке - ему даётся новое имя (не ~1, а ~2), и никакой ошибки в итоге не происходит. В принципе, можно делать так. А можно просто копировать файлы вместе с их короткими именами (во всяком случае, я не вижу в этом ничего принципиально невозможного, хотя пока и не видел такого на практике).
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
Ошибка при копировании файлов
Я просто понажимал CtrlC/CtrlV в Explorer, понаблюдал аналогичные диалоги "файл уже существует" и пока что уверен в обратном.
The caller of this function must have the SE_RESTORE_NAME privilege - эта роскошь по умолчанию доступна только администраторам. Если вы копируете как обычный пользователь - без обид, но, подозреваю, вы не совсем понимаете, что там происходит.могу объяснить, что там происходит ... происходит изменение КОРОТКОГО имени
-
- Posts: 9
- Joined: Sat 26 Oct, 2019 19:54
Ошибка при копировании файлов
Я вас действительно не совсем понимаю, особенно при чём тут обиды, но единственное - могу подтвердить, что я копирую-вставляю из-под администраторского аккаунта Windows XP SP3. И всё работает именно так, как я описываю. Если система видит тот конфликт коротких имён, который я описываю - она изменяет короткое имя у того файла, который уже находится в папке, в которую копируют. Ну вот даже не знаю, как вас убедить, что я вам говорю правду.
-
- Posts: 9
- Joined: Sat 26 Oct, 2019 19:54
Ошибка при копировании файлов
Но что интересно - всё прекрасно работает и тогда, когда я зашёл в систему под гостевым аккаунтом. Так что почему не работает у вас - я совсем-совсем не понимаю. Видимо, какие-то особенности вашей операционной системы.
- HaRT
- Moderator
- Posts: 10863
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
- zg
- zero-gravity
- Posts: 6035
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
Ошибка при копировании файлов
xp всегда вначале копирует файлы с коротким именем в котором есть тильда. если это не помогает, файл с совпадающим коротким именем переименовывается во что-то типа 1.tmp, новый файл копируется, 1.tmp переименовывается обратно. в поздних версиях это видимо убрали.
-
- Posts: 9
- Joined: Sat 26 Oct, 2019 19:54
Ошибка при копировании файлов
Ну вот было бы прекрасно, если бы FAR научился делать то, что умеет делать Windows XP (и разучились делать последующие операционные системы Microsoft).
Ошибка при копировании файлов
Ну если в ХР все норм, попробуйте использовать "системную функцию копирования" в настройках, видимо поэтому тотал норм работает, они не заморачивались такими мелочами как собственная обработка копирования.
вообще не понятно, как такой функционал мог бы понадобиться, скорее редкое исключение, ну или возможно какое то вирусописательство)
но если в 7ке+ изменение коротких имен только с повышением привилегий, то кроме костыля ничего нормального не получится.
Конфликт то не изза того что фар пишет неправильное короткое имя, а изза того что вы передаете длинное имя, система САМА! дает ему короткое на основании длинного, т.е. генерирует по определенным правилам, а когда вы отдаете второй файл в ту же папку, он уже имеет такое же имя, и даже если система и пытается генерировать, то по этим правилам генерируется то же самое имя. Вот и конфликт, это к мелкомягким.
попробуйте то же реализовать например батником любым, и поймете что не так все просто.
Хотя макрос или плагин для работы с короткими именами наверное имел бы академический интерес.
вообще не понятно, как такой функционал мог бы понадобиться, скорее редкое исключение, ну или возможно какое то вирусописательство)
но если в 7ке+ изменение коротких имен только с повышением привилегий, то кроме костыля ничего нормального не получится.
Конфликт то не изза того что фар пишет неправильное короткое имя, а изза того что вы передаете длинное имя, система САМА! дает ему короткое на основании длинного, т.е. генерирует по определенным правилам, а когда вы отдаете второй файл в ту же папку, он уже имеет такое же имя, и даже если система и пытается генерировать, то по этим правилам генерируется то же самое имя. Вот и конфликт, это к мелкомягким.
попробуйте то же реализовать например батником любым, и поймете что не так все просто.
Хотя макрос или плагин для работы с короткими именами наверное имел бы академический интерес.
-
- Posts: 9
- Joined: Sat 26 Oct, 2019 19:54
Ошибка при копировании файлов
а) включение "системной функции копирования" никак эту проблему не убирает. Единственный способ копирования в FAR - это копировать и вставлять через буфер, что внутри FARa тоже можно делать (кстати, есть даже плагин с макросом, которые облегчают всё это). Так что катастрофической проблемы у меня никакой нет, во всяком случае, пока использовать Windows XP. А эту тему я создал скорее для того, чтобы разработчики обратили на этот вопрос внимание. И да, в более новых операционных системах эту проблему, как видим, решить намного сложнее.
б) Данная проблема, как по мне, может встречаться не только у меня (и я сам её не выдумал, она возникла сама по себе). Никакие вирусы тут абсолютно ни при чём - есть множество разных программ, которые сами сохраняют файлы под короткими именами (т.е. убирают длинные имена вовсе), а потом в одной и той же папке оказываются вот такие вот файлы, которые в дальнейшем конфликтуют друг с другом при копировании.
в) пожалуйста, перечитайте то, что написал zg. По-моему, он прекрасно описал алгоритм, как Windows XP решает эту проблему без всякого повышения привилегий (и да, всё это работает и под гостевым аккаунтом Windows XP)
б) Данная проблема, как по мне, может встречаться не только у меня (и я сам её не выдумал, она возникла сама по себе). Никакие вирусы тут абсолютно ни при чём - есть множество разных программ, которые сами сохраняют файлы под короткими именами (т.е. убирают длинные имена вовсе), а потом в одной и той же папке оказываются вот такие вот файлы, которые в дальнейшем конфликтуют друг с другом при копировании.
в) пожалуйста, перечитайте то, что написал zg. По-моему, он прекрасно описал алгоритм, как Windows XP решает эту проблему без всякого повышения привилегий (и да, всё это работает и под гостевым аккаунтом Windows XP)