Переименование/перемещение файлов Topic is solved
Переименование/перемещение файлов
Здравствуйте.
При переименовании/перемещении файла из одного каталога в другой Far убирает из активной панели перемещенный файл и перемещает выделение на файл, который был ниже перемещенного.
Если же в обоих панелях один и тот же каталог, то выделение остается на переименованном файле, а он при этом может оказаться далеко от исходного положения в панели из-за сортировки (хотя режим "Не сортировать" и включен), и следующий за ним файл приходится искать по списку.
Есть ли возможность настроить Far так, чтобы переименование/перемещение при одном и том же каталоге в обоих панелях работало бы так же, как и в случае различных каталогов в панелях? То есть, переименованный файл "улетал" бы по списку в зависимости от сортировки, а выделение бы перемещалось на следующий в списке файл. Либо, как вариант, файл бы переименовывался "по месту", то есть, при переименовании не менял бы своего положения в списке.
При переименовании/перемещении файла из одного каталога в другой Far убирает из активной панели перемещенный файл и перемещает выделение на файл, который был ниже перемещенного.
Если же в обоих панелях один и тот же каталог, то выделение остается на переименованном файле, а он при этом может оказаться далеко от исходного положения в панели из-за сортировки (хотя режим "Не сортировать" и включен), и следующий за ним файл приходится искать по списку.
Есть ли возможность настроить Far так, чтобы переименование/перемещение при одном и том же каталоге в обоих панелях работало бы так же, как и в случае различных каталогов в панелях? То есть, переименованный файл "улетал" бы по списку в зависимости от сортировки, а выделение бы перемещалось на следующий в списке файл. Либо, как вариант, файл бы переименовывался "по месту", то есть, при переименовании не менял бы своего положения в списке.
Переименование/перемещение файлов
ps. Сортировка по размеру позволяет переименовывать "по месту". Но для меня этот вариант не годится: мне необходимо переименовать большое количество файлов, часть уже переименованы, непереименованые файлы идут подряд в начале списка, а если включить сортировку по размеру, то файлы, требующие переименования, будут раскиданы по списку как попало.
- John Doe
- Бюрократ
- Posts: 13855
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
Переименование/перемещение файлов
Прямой нет, но макросами можно.
Есть ещё режим "без сортировки".
https://t.me/FarManager — Telegram чат
Переименование/перемещение файлов
А как можно построить такой макрос?
Если Вы имеете в виду Ctrl+F12 -> "Не сортировать", то этот режим у меня включен, но все равно переименованный файл "улетает" в другое место списка. Или я не правильно пользуюсь этим режимом?
- buniak_a_h
- Posts: 4265
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
Переименование/перемещение файлов
iojikin!
Первое. Как оказалось, достаточно перед именем файла указать полный путь - и будет работать так, как и при перемещении в другую папку (т.е. то, что Вы хотите, по-моему).
Второе. Про скрипт.
Если в строке назначения диалога копирования нет символа
Есть 2 особенности:
1. Если после переименования файл перемещается вверх, текущим становится не следующий а предыдущий файл (Собственно, как и стандартное перемещение)
2. Если в строке назначения указан новый файл с полным путём (даже если полный путь указывает на исходную папку), то скрипт не работает. Экзотика, но вдруг… К тому же это - возможность вызвать стандартное перемещение.
Первое. Как оказалось, достаточно перед именем файла указать полный путь - и будет работать так, как и при перемещении в другую папку (т.е. то, что Вы хотите, по-моему).
Второе. Про скрипт.
Попробуйте создать файл в любом подкаталоге папки cd %FARPROFILE%\Macros\scripts (доступна из ФАРа) с любым именем в одировке UTF-8 следующего содержания: После этого введите в командной строке команду macro:load.
Если в строке назначения диалога копирования нет символа
\
и указана не папка, то текущая позиция на активной панели сохраняется.Есть 2 особенности:
1. Если после переименования файл перемещается вверх, текущим становится не следующий а предыдущий файл (Собственно, как и стандартное перемещение)
2. Если в строке назначения указан новый файл с полным путём (даже если полный путь указывает на исходную папку), то скрипт не работает. Экзотика, но вдруг… К тому же это - возможность вызвать стандартное перемещение.
Last edited by buniak_a_h on Sat 26 Dec, 2020 20:28, edited 1 time in total.
Переименование/перемещение файлов
Да, это то что мне надо. Спасибо. Теперь понятно, как сделать макрос - Ctrl-. Home Ctrl-] Ctrl-.buniak_a_h wrote: ↑Sat 26 Dec, 2020 20:27 Как оказалось, достаточно перед именем файла указать полный путь - и будет работать так, как и при перемещении в другую папку (т.е. то, что Вы хотите, по-моему).
Скрипт тоже работает, правда, при наборе нового имени файла выдает ошибку: "...lua:16 attempt to index a number value".
Переименование/перемещение файлов
Точнее Ctrl-. Home Ctrl-[ Ctrl-.
После набора нескольких символов появляется диалог с ошибкой (может появиться несколько раз). После закрытия диалога нажатия Enter, файл переименовывается и выделение не уходит вместе с ним.при наборе нового имени файла выдает ошибку: "...lua:16 attempt to index a number value".
- buniak_a_h
- Posts: 4265
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
Переименование/перемещение файлов
Я понял. Просто никак не могу воспроизвести. Вроде скрипт должен работать только при закрытии диалога; изменение содержимого поля никак не влияет. Ну, порядке бреда, попробуйте заменить строки 16 и 17 на следующие:
Переименование/перемещение файлов
Еще точнее: Ctrl-. F6 Home Ctrl-[ Ctrl-.
Попробовал обновить Far до сборки 5700.0 x64 (была 5000 x64). Попробовал сборку 5700.0 x86. На всех трех сборках проверил оба варианта скрипта. Во всех случаях была ошибка. Сообщение:buniak_a_h wrote: ↑Sun 27 Dec, 2020 04:41 Просто никак не могу воспроизвести. Вроде скрипт должен работать только при закрытии диалога; изменение содержимого поля никак не влияет. Ну, порядке бреда, попробуйте заменить строки 16 и 17 на следующие:
Code: Select all
C:\Program Files\Far Manager\Plugins\LuaMacro\LuaMacro.dll:
... Manager\Profile\Macros\scripts\myscripts\copyscript.lua:16: attempt to index a number value
stack traceback:
... Manager\Profile\Macros\scripts\myscripts\copyscript.lua:16: in function 'condition'
C:\Program Files\Far Manager\Plugins\LuaMacro\utils.lua:192: in function <C:\Program Files\Far Manager\Plugins\LuaMacro\utils.lua:185>
Каталог - D:\Книги\Неразобранное
Нажимал F6, затем сразу же набирал имя файла: Rubakin06... В сборках x64 диалог чаще появляется при наборе второй цифры, в сборках x86 - при наборе буквы f в расширении.
На сборке 5700.0 x64 проверил в каталоге верхнего уровня без русских букв: D:\testcopy
Все равно показывает ошибку.
- buniak_a_h
- Posts: 4265
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
Переименование/перемещение файлов
iojikin, я не понял про 01020\d.pdf. Это файл так называется? Со слэшом в имени файла? Как вы это сделали?
Кстати, для такой операции рекомендую плагин Visual Renaming. Там есть переименование по регэксп-шаблону. В Вашем случае было бы 0101(.*) -> Rubakin$1 (так примерно). Ну, правда, со слэшом в имени я не знаю, что делать…
Кстати, для такой операции рекомендую плагин Visual Renaming. Там есть переименование по регэксп-шаблону. В Вашем случае было бы 0101(.*) -> Rubakin$1 (так примерно). Ну, правда, со слэшом в имени я не знаю, что делать…
Переименование/перемещение файлов
Это я так любую цифру от 0 до 9 обозначил. Прошу прощения, думал, будет понятно.
У меня переименование не по шаблону, а по содержимому файла. Открываешь pdf, смотришь пару-другую страниц, закрываешь, переименовываешь. Файлы 010200.pdf, 010201.pdf, ..., 010209.pdf с переименованием в Rubakin00.pdf и т. д. - это, на самом деле один файл, который я раскопировал для тестирования Вашего скрипта.Кстати, для такой операции рекомендую плагин Visual Renaming. Там есть переименование по регэксп-шаблону.
- buniak_a_h
- Posts: 4265
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
Переименование/перемещение файлов
iojikin, пока никак не вылетает. Сейчас перепишу так, чтоб вообще не было шансов вылететь (лишние, на мой взгляд, проверки вставлю).
Может, ещё какой скрипт/плагин портит? Не понимаю…
Может, ещё какой скрипт/плагин портит? Не понимаю…
Переименование/перемещение файлов
Я сейчас попробовал удалить и снова установить Far, отключив все аддоны и плагины, кроме LuaMacro. Все равно, если после открытия диалога перемещения сразу же начинаешь набирать новое имя, то через несколько нажатий клавиш ловишь ошибку. Но на этот раз заметил, что если после открытия диалога переместить курсор за расширение, стереть имя файла и набирать новое, то ошибка не появляется.
ps. Я попробовал два варианта: первый - закомментировать строки 16-18 в исходном скрипте и второй - переместить строку 19 на место перед строкой 16 (и переместить соответственно 'and' из конца строки 18). В обоих вариантах ошибки нет. Понятно, что в первом варианте часть логики теряется, а во втором она как-то изменяется?
Last edited by iojikin on Sun 27 Dec, 2020 16:21, edited 1 time in total.
- buniak_a_h
- Posts: 4265
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
Переименование/перемещение файлов
Второй вариант - правильный без вариантов. В том скрипте, что я Вам начал писать, проверка, что нажата умолчательная кнопка (iojikin wrote: ↑Sun 27 Dec, 2020 15:44 Я попробовал два варианта: первый - закомментировать строки 16-18 в исходном скрипте и второй - переместить строку 19 на место перед строкой 16 (и переместить соответственно 'and' из конца строки 18). В обоих вариантах ошибки нет. Понятно, что в первом варианте часть логики теряется, а во втором она как-то изменяется?
{ Move }
), перенесена выше (после 15-й строки). И это - правильно и эффективно. Просто когда я начинал писать, я ещё не знал про Dlg.GetValue(…, 9)
.