Перемещение папки, если папка с таким именем уже существует

Вам не хватает чего-то в Far? Вы считаете, что вашу идею стоит услышать? Пишите сюда.
LAT
Posts: 204
Joined: Thu 21 Jan, 2010 20:00
Has thanked: 6 times
Been thanked: 10 times

Перемещение папки, если папка с таким именем уже существует

Post by LAT » Thu 21 Jan, 2010 20:57

Версия: 2.0.1346 (но ситуация, кажется, характерна для всех версий >= 1.71). В настройках "Параметры//Подтверждения" установлены все чекбоксы, все плагины отключены

Если происходит перемещение(копирование) папки, при этом имя папки изменяется, и папка с новым именем уже существует, происходит перемещение(копирование) папки со старым именем внутрь уже существующей папки.

Пример: в папке C:\DOC есть папки Book и Books, внутри которых разбросаны книги различной тематики(под каждую выделена своя подпапка). При попытке перенести книги из Book в Books путем переименования (F6, ввести Books в диалоге), вместо того, чтобы осуществился перенос подпапок и файлов, вся папка Book со всей своей структурой переносится внутрь Books.

Поведение FAR-а при переименовании в рамках одного каталога.
для файлов:
- если имя файла не изменено, сообщение об ошибке
- если файл с указанным именем не существует, переименование
- если файл с указанным именем существует, предупреждение "Файл уже существует"
для папок:
- если имя папки не изменено, сообщение об ошибке
- если папка с указанным именем не существует, переименование
- если папка с указанным именем существует, ПЕРЕМЕЩЕНИЕ ДАННОЙ ПАПКИ ВНУТРЬ СУЩЕСТВУЮЩЕЙ

Поведение FAR-а при переименовании в рамках разных каталогов.
для файлов:
- если файл с указанным именем не существует, переименование
- если файл с указанным именем существует, предупреждение "Файл уже существует"
для папок:
- если папка с указанным именем не существует, переименование
- если папка с указанным именем существует и имя папки в диалоге переименования не изменялось, предупреждение "Файл уже существует"
- если папка с указанным именем существует, и имя папки в диалоге переименования было изменено, ПЕРЕМЕЩЕНИЕ ДАННОЙ ПАПКИ ВНУТРЬ СУЩЕСТВУЮЩЕЙ

Аналогично FAR ведет себя в случае копирования.

Недостатки данного подхода к перемещению(копированию):
1) различное поведение в разных ситуациях замедляет работу: вместо автоматического выполнения операций приходится задумываться: переместятся(скопируются) ли данные туда, куда хотелось бы.
2) в случае существования папки с требуемым именем само перемещение(копирование) становится громоздким: нужно на одной панели открыть одну папку, на другой - вторую, выделить все, переместить(скопировать), а при перемещении - еще и подняться на уровень вверх и удалить старую папку.
3) не всегда хватает времени или внимательности, чтобы заметить, что папка с новым именем уже существует, поэтому после перемещения(копирования) файлы иногда приходится искать - особенно если с момента перемещения(копирования) прошло достаточно много времени.

Конечно, все это можно попробовать "победить" и макросами, но, возможно, имеет смысл унифицировать поведение программы для случаев файлов и папок, независимо от того, существует ли уже папка с новым именем, и сделать это поведение максимально удобным для пользователей? Имхо, будет логичнее и удобнее , если при попытке перемещения(копирования) папки и условии, что папка с новым именем уже существует, программа будет выводить предупреждение об этом и стандартный диалог "Файл уже существует".

User avatar
[e]Bu$ter
Posts: 792
Joined: Mon 30 May, 2005 23:05
Location: Беларусь, Минск
Contact:

Re: Перемещение папки, если папка с таким именем уже существует

Post by [e]Bu$ter » Fri 22 Jan, 2010 16:10

Тоже иногда сталкиваюсь с этим. Хочется объединить содержимое двух каталогов в одном, даёшь первой папке имя второй, и вместо желаемого результат получаешь первый каталог внутри второго. Да ещё и не переименованный.

Примечательно, что ТС (6.5) ведёт себя аналогичным образом.

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 3 times

Re: Перемещение папки, если папка с таким именем уже существует

Post by Skirda » Fri 22 Jan, 2010 18:37

[e]Bu$ter wrote:Примечательно, что ТС (6.5) ведёт себя аналогичным образом.
слизали :ha:
We are the Borg. You will be assimilated.
So Say We All!

User avatar
Centaur
Posts: 1083
Joined: Tue 05 Apr, 2005 20:09
Location: Novosibirsk, Russia
Been thanked: 1 time

Re: Перемещение папки, если папка с таким именем уже существует

Post by Centaur » Fri 22 Jan, 2010 18:52

Это правильно, потому что соответствует поведению команды move.

User avatar
[e]Bu$ter
Posts: 792
Joined: Mon 30 May, 2005 23:05
Location: Беларусь, Минск
Contact:

Re: Перемещение папки, если папка с таким именем уже существует

Post by [e]Bu$ter » Sat 23 Jan, 2010 16:21

Centaur wrote:Это правильно, потому что соответствует поведению команды move.
На мой взгляд, move — это если бы мы F6 жали. Тогда я полностью согласен, другого поведения и ожидать нельзя. Но ведь мы жмём ShiftF6, и ожидаем некий аналог ren.

LAT
Posts: 204
Joined: Thu 21 Jan, 2010 20:00
Has thanked: 6 times
Been thanked: 10 times

Re: Перемещение папки, если папка с таким именем уже существует

Post by LAT » Sat 23 Jan, 2010 18:22

Centaur wrote:Это правильно, потому что соответствует поведению команды move.
Мне кажется, что правильно - когда поведение соответствует желанию пользователя, а не команде move. Ведь если move ведет себя неудобно, разве это повод, чтобы FAR следовал ей? В принципе, недостатки текущего поведения я перечислил в 1-м посту.

User avatar
vkh
Posts: 226
Joined: Fri 13 Nov, 2009 07:48
Has thanked: 2 times
Been thanked: 1 time

Re: Перемещение папки, если папка с таким именем уже существует

Post by vkh » Sun 24 Jan, 2010 14:56

а я считаю фар и move ведут себя корректно
мы переименовываем папку А в папку Б. папка Б уже есть. разумно предположить что мы хотим перемесить именно А в Б, а не содержимое А в Б.
для перемещения содержимого А в Б необходимо зайти в А, выделить вс:е Ctrl+звездочка и перенести в нужную папку Б

LAT
Posts: 204
Joined: Thu 21 Jan, 2010 20:00
Has thanked: 6 times
Been thanked: 10 times

Re: Перемещение папки, если папка с таким именем уже существует

Post by LAT » Sun 24 Jan, 2010 15:58

vkh wrote:а я считаю фар и move ведут себя корректно
мы переименовываем папку А в папку Б. папка Б уже есть. разумно предположить что мы хотим перемесить именно А в Б, а не содержимое А в Б.
для перемещения содержимого А в Б необходимо зайти в А, выделить вс:е Ctrl+звездочка и перенести в нужную папку Б
Т.е.:
1) если папка Б уже существует, разумно предположить, что мы в итоге хотим получить структуру папок Б/А/.
2) а вот если Б не существует, мы, оказывается, хотим получить структуру Б/.
3) а для файлов вариант 1 вообще невозможен, и мы всегда хотим получить Б.
Получается: разумно предположить, что в одном и том же режиме давим одни и те же кнопки, а хотим получить разные результаты??? :?

Ведь вся эта «разумность» сводится к тому, чтобы пользователь, перед тем как переименовывал (копировал):
1) сверился - он копирует файл или папку
2) для файла смело нажимал [SHIFT-]F6(F5) и вводил новое имя
3) для папки – дополнительно проверял, есть ли такая папка
4) если нету – нажимал [SHIFT-]F6(F5) и аккуратно и внимательно вводил новое имя: ведь достаточно сделать опечатку, или не глядя воспользоваться автодополнением (сама по себе штука удобная, но в данной ситуации сопряжена с некоторым риском), чтобы папка со всем своим содержимым безо всяких предупреждений отправилась вглубь какой-либо другой (в конечном итоге - неизвестной) папки.
5) если есть – вывел на одной панели содержимое папки А, на другой – содержимое папки Б, выделил все в папке А, переименовал (скопировал) (F6(F5)) с панели на панель, восстановил на одной из панелей содержимое до переименования (копирования) (ведь она не просто так была открыта, он же чем то там занимался?), а в случае переименования – перешел на другой панели из папки А на уровень выше и удалил саму папку А.

Что разумнее – выполнять все перечисленные действия самому :( или возложить этот простой, но несколько задолбистый труд на программу :) ? Чтобы она всегда вела себя однотипно, как в случае файлов.

User avatar
Px
Posts: 826
Joined: Fri 08 Sep, 2006 15:52
Location: Вишнёвый (под Киевом)
Contact:

Re: Перемещение папки, если папка с таким именем уже существует

Post by Px » Sun 24 Jan, 2010 16:07

vkh wrote:мы переименовываем папку А в папку Б. папка Б уже есть. разумно предположить что мы хотим перемесить именно А в Б, а не содержимое А в Б.
Вроде же было уже подобное обсуждение...
С моей точки зрения переименование А в Б должно переносить содержимое А в Б, а вот если в конце указать \, то должно происходить перемещение А в Б :)

User avatar
[e]Bu$ter
Posts: 792
Joined: Mon 30 May, 2005 23:05
Location: Беларусь, Минск
Contact:

Re: Перемещение папки, если папка с таким именем уже существует

Post by [e]Bu$ter » Sun 24 Jan, 2010 16:31

Px wrote:...
С моей точки зрения переименование А в Б должно переносить содержимое А в Б, а вот если в конце указать \, то должно происходить перемещение А в Б :)
Присоединяюсь.

LAT
Posts: 204
Joined: Thu 21 Jan, 2010 20:00
Has thanked: 6 times
Been thanked: 10 times

Re: Перемещение папки, если папка с таким именем уже существует

Post by LAT » Sun 24 Jan, 2010 17:00

Px wrote: С моей точки зрения переименование А в Б должно переносить содержимое А в Б, а вот если в конце указать \, то должно происходить перемещение А в Б :)
Т.е.: если при переименовании (и, наверное, копировании?) папки А в Б, при условии, что папка Б существует, набрать "Б\", должна появиться структура Б\А (поведение идентично текущему), а набрать "Б", то остается только папка Б (с выдачей сообщений, если А и Б содержит одноименные файлы и переносом содержимого А в Б)?

User avatar
Px
Posts: 826
Joined: Fri 08 Sep, 2006 15:52
Location: Вишнёвый (под Киевом)
Contact:

Re: Перемещение папки, если папка с таким именем уже существует

Post by Px » Sun 24 Jan, 2010 17:40

LAT wrote:
Px wrote: С моей точки зрения переименование А в Б должно переносить содержимое А в Б, а вот если в конце указать \, то должно происходить перемещение А в Б :)
Т.е.: если при переименовании (и, наверное, копировании?) папки А в Б, при условии, что папка Б существует, набрать "Б\", должна появиться структура Б\А (поведение идентично текущему), а набрать "Б", то остается только папка Б (с выдачей сообщений, если А и Б содержит одноименные файлы и переносом содержимого А в Б)?
Ага.
Единственная неоднозначность: переименовываем А в Б, указано Б\, а папки Б нет, в таком случае должна создаться папка Б, и появиться структура Б\А

LAT
Posts: 204
Joined: Thu 21 Jan, 2010 20:00
Has thanked: 6 times
Been thanked: 10 times

Re: Перемещение папки, если папка с таким именем уже существует

Post by LAT » Sun 24 Jan, 2010 17:58

Присоединяюсь: имхо, такое поведение будет последовательным, однозначным и удобным. Осталось только выяснить, как к такому предложению отнесутся оппоненты и FAR Group. :)

LAT
Posts: 204
Joined: Thu 21 Jan, 2010 20:00
Has thanked: 6 times
Been thanked: 10 times

Re: Перемещение папки, если папка с таким именем уже существ

Post by LAT » Wed 14 May, 2014 12:00

[жалобно] Может, все-таки можно реализовать предложение http://forum.farmanager.com/posting.php ... 64#pr57260 для переноса и копирования?

User avatar
John Doe
Бюрократ
Posts: 12247
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 32 times
Been thanked: 162 times

Re: Перемещение папки, если папка с таким именем уже существ

Post by John Doe » Wed 14 May, 2014 14:49

Существуют ли файлменеджер, или консольная утилита, работающие именно так?

При копировании нескольких файлов завершающий слеш помогает определить, что назначение - папка, а не файл.
Различать наличие/отсутствие слеша в других случаях - идея сомнительная.

Может лучше написать макрос?

LAT
Posts: 204
Joined: Thu 21 Jan, 2010 20:00
Has thanked: 6 times
Been thanked: 10 times

Re: Перемещение папки, если папка с таким именем уже существ

Post by LAT » Wed 14 May, 2014 15:31

John Doe wrote:Существуют ли файлменеджер, или консольная утилита, работающие именно так?
Насчет файл-менеджеров и утилит - не знаю, юзаю только FAR.
John Doe wrote:При копировании нескольких файлов завершающий слеш помогает определить, что назначение - папка, а не файл.
Различать наличие/отсутствие слеша в других случаях - идея сомнительная.
В FAR'е при копировании файла даже без завершающего слеша производится копирование в папку (например, нахожусь в папке C:\A, копирую файлы 1.txt, 2.txt, указываю в диалоге C:\B - получаю файлы C:\B\1.txt, C:\B\2.txt, точно так же, как и при указании C:\B\)
John Doe wrote:Может лучше написать макрос?
Я уже начал было писать макрос. Но обнаружил, что в момент подтверждения копирования я могу изменить только "куда копировать". При этом подобрать значение "куда копировать", чтобы копирование производилось, как хочется, не удалось. Получается, в момент подтверждения нужно:
а) определить, что копируется/переносится папка (вроде бы можно, используя mf.fattr)
б) для которой указывается новое имя (вроде бы тоже можно, используя SendDlgMessage с DM_GETDIALOGINFO и DM_GETDLGITEM)
в) на пассивной панели существует такая папка (вроде бы можно, используя panel.GetPanelDirectory, mf.fexist и ранее выдранное из диалога имя)
г) найти все файлы в текущей папке (вроде можно, используя far.GetDirList)
д) подменить "что копировать" (папку) на свеженайденный набор файлов из папки
Вот с подменой "что копировать" и возникает проблема - как это сделать?

ЗЫ. Это только для одной папки, над ситуацией, когда их несколько не думал (вряд ли это мне потребуется)
ЗЗЫ. Кстати, вроде бы, в отличие от move, copy копирует файлы (но не подпапки :() внутри папки корректно
UPD. Вставил в пост цитаты, чтобы было понятно, о чем речь.

Post Reply

Return to “Предложения и идеи”