Page 2 of 4

Копирование файлов с временной панели с сохранение структуры папок

Posted: Tue 24 Apr, 2018 20:12
by buniak_a_h
Предлагаю небольшой макрос, копирующий файлы с временной панели, открытой на активной панели (извините за тавтологию) в директорий, открытый на неактивной панели. Макрос "рассовывает" копируемые файлы по подкаталогам в соответствии с их расположением в исходной структуре (относительно "корневой" папки). Особенно полезна для копирования результатов поиска файлов, помещённых на временную панель.





Опубликовал версию 1.5.2 в связи с изменениями в модулях
CopyFiles.TempPanel.lua.1.5.3.7z
(20.66 KiB) Downloaded 149 times

Копирование файлов с временной панели с сохранение структуры папок

Posted: Wed 25 Apr, 2018 16:04
by buniak_a_h

Latest post of the previous page:

Сделал 3-ю версию макроса. Changelog:
  • Версия 2
    1. Первая версия работала только во временной панели, созданной плагином TempPanel. Во вторую версию добавлены временные панели от плагинов LuaFAR Search и RESearch
  • Версия 3
    • По рекомендации John Doe заменил проверку GUID-а на флаг файловой панели
    • Добавил проверку, что исходный файл - реальный, т.к. TmpPanel в режиме :any может отображать на панели что угодно
    • Сделан обход ошибки ФАРа в функции Panel.Select для гашения отметок

Копирование файлов с временной панели с сохранение структуры папок

Posted: Thu 10 May, 2018 07:12
by buniak_a_h
Обновил скрипт в первом посте темы. Добавлена простейшая визуализация и прерывание по [Esc].
Господа гуру! Может, кто читает эту тему и сможет ответить на "смежный" вопрос: есть ли возможность как-то визуализировать в макросе процесс копирования одного файла (без программирования самого процесса копирования)? Варианты:
(а) вызов внутренней процедуры копирования файла ФАРа с параметрами (Source, Destination, RewriteMode) и кодом возврата
(б) может, посоветуете плагин с аналогичными возможностями
Просто вызов диалога копирования с последовательностью Keys не очень подходит: не определить, что копирование было прервано. Подозреваю, что меня бы устроила export.GetFiles, но примера использования не нашёл.

Копирование файлов с временной панели с сохранение структуры папок

Posted: Thu 10 May, 2018 11:57
by HaRT
buniak_a_h wrote: Thu 10 May, 2018 07:12 вызов диалога копирования с последовательностью Keys не очень подходит: не определить, что копирование было прервано
Я не гуру, но подозреваю, что прерывание копирования в стандартном диалоге можно отловить, повесив обработчик на соответствующее диалоговое событие. Костыль, конечно, но всё же лучше, чем ничего. Вот тут есть некий пример обработчика (правда, инициализации диалога, притом на Moon Script): viewtopic.php?p=146816#p146816.

Копирование файлов с временной панели с сохранение структуры папок

Posted: Thu 10 May, 2018 12:21
by John Doe
buniak_a_h wrote: Thu 10 May, 2018 07:12 не определить, что копирование было прервано.
Проверить существование целевого файла?

Копирование файлов с временной панели с сохранение структуры папок

Posted: Thu 10 May, 2018 12:27
by buniak_a_h
Спасибо всем. Метод реализуемый, но какой-то... чрезвычайный. Через выю, короче. Не люблю я клавиатурные макросы вперемешку с процедурами на языках программирования. Подожду ещё; если никто не присоветует - буду думать в направлении клавимакроса... :-(

Копирование файлов с временной панели с сохранение структуры папок

Posted: Thu 10 May, 2018 12:39
by John Doe
Альтернативно, можно было бы целиком переложить копирование на какой-либо сторонний компонент (xcopy, robocopy, fastcopy, teracopy, etc), а функции макроса ограничить подготовкой файла с заданием.

Копирование файлов с временной панели с сохранение структуры папок

Posted: Thu 10 May, 2018 13:57
by zg
CopyFileEx есть же. там может в самом начеале чуть посложнее, и то не факт, но в перспективе — самый нормальный метод.

Копирование файлов с временной панели с сохранение структуры папок

Posted: Thu 10 May, 2018 16:18
by buniak_a_h
zg wrote: Thu 10 May, 2018 13:57CopyFileEx
1. Уж не стал писать... У меня CopyFileEx - персона non grata. Несколько раз копирование обрывалось без всякой диагностики. Т.е. пока скопированным файлом не воспользуешься - об ошибке не узнаешь. Ошибка абсолютно случайная, устойчиво повторить не могу.
2. абсолютно не предусмотрен интерфейс для использования из скрипта. Я имею в виду - нет ни вызова нужной функции через Plugin.Call, ни через командную строку. Или есть, но в документации не описано. А значит - опять Keys...

Копирование файлов с временной панели с сохранение структуры папок

Posted: Thu 10 May, 2018 16:23
by HaRT
buniak_a_h wrote: Thu 10 May, 2018 16:18 У меня CopyFileEx - персона non grata. Несколько раз копирование обрывалось без всякой диагностики.
Вы про плагин? Я подозреваю, что zg имел в виду ф-ю WinAPI.

Копирование файлов с временной панели с сохранение структуры папок

Posted: Thu 10 May, 2018 17:57
by zg
тем более плагин немного не так называется.

Копирование файлов с временной панели с сохранение структуры папок

Posted: Thu 10 May, 2018 19:11
by buniak_a_h
zg wrote: Thu 10 May, 2018 17:57 тем более плагин немного не так называется.
Да, извините, плагин - FileCopyEx.
HaRT wrote: Thu 10 May, 2018 16:23 zg имел в виду ф-ю WinAPI
И что мне с ней делать? писать вставку на СИ для вызова функции? Я этим не занимался пока, и не уверен, что овчинка выделки стоит. Если только написать "универсальный" макрос, вызывающий эту функцию. Для одной задачи - стрельба из пушки по воробьям. Я надеялся, что такое могло уже кому-то понадобиться, и кно-нить уже реализовал. Видимо, нет.

Копирование файлов с временной панели с сохранение структуры папок

Posted: Thu 10 May, 2018 19:31
by HaRT
buniak_a_h wrote: Thu 10 May, 2018 19:11 что мне с ней делать? писать вставку на СИ для вызова функции?
FFI

Копирование файлов с временной панели с сохранение структуры папок

Posted: Thu 10 May, 2018 22:51
by buniak_a_h
HaRT wrote: Thu 10 May, 2018 19:31
buniak_a_h wrote: Thu 10 May, 2018 19:11 что мне с ней делать? писать вставку на СИ для вызова функции?
FFI
Это я и имел в виду под "вставкой на СИ".

Копирование файлов с временной панели с сохранение структуры папок

Posted: Fri 11 May, 2018 02:14
by buniak_a_h
HaRT, с ffi возникли проблемы. Посмотрите, пожалуйста, вопрос на форуме, посвящённом ffi

Копирование файлов с временной панели с сохранение структуры папок

Posted: Fri 30 Nov, 2018 06:44
by Shtirla
Во первых Спасибо автору ! помог решить задачку быстрее.
во вторых выкладываю модификацию текущего макроса, замена идет поиском первых слэшей в пути, а не из Panel0, ибо накиданные с разных ресурсов файлы так не копировались


Копирование файлов с временной панели с сохранение структуры папок

Posted: Fri 30 Nov, 2018 10:58
by buniak_a_h
Shtirla wrote: Fri 30 Nov, 2018 06:44 замена идет поиском первых слэшей в пути, а не из Panel0, ибо накиданные с разных ресурсов файлы так не копировались
Я, конечно, в курсе. Но тут тоже проблема возникает: если поиск привёл к тому, что все найденные файлы расположены в одном подкаталоге (и его вложенных), то в качестве "корня" будет именно этот общий каталог. Меня это не устраивало. Поэтому я сделал макрос, "заточенный" под поиск по AltF7: при закрытии диалога поиска я запоминаю текущий каталог в локальную переменную, а при копировании использую это значение. Плюс - ясно. Минус - именно "заточенность" на поиск файла. Т.е. при занесении на временную панель файла, не находящегося в каталоге, бывшем текущим при начале поиска этот файл не будет найден. В связи с этим добавил следующее: если после копирования остались не скопированные файлы, то инициируется обычный поиск (F5).
Пример переделанного макроса будет помещён в первый пост темы чуть позже.