Фоновое копирование с помощью FastCopy

Здесь обсуждается всё, что касается макросов.
DV
Posts: 427
Joined: Mon 07 Aug, 2006 08:23
Has thanked: 22 times
Been thanked: 15 times

Фоновое копирование с помощью FastCopy

Post by DV »

Поскольку плагин Background Copy не развивается, а необходимость копирования в фоне есть, было принято волевое решение реализовать копирование в фоне с помощью макроса.
Особенности данного макроса:
1. Код данного макроса базируется на макросах Plugin_FastCopy & Plugin_TeraCopy (C) SimSU
2. Почему именно FastCopy? Потому что это "рабочая лошадка", невзирая на его невзрачный внешний вид. TeraCopy выглядит гораздо приятнее, но при копировании файлов порой возникают проблемы. Это неприемлемо.
3.
4.

Сам макрос, версия 1.3.3:


Он же:
Plugin.FastCopy.1.3.3.7z
(3.54 KiB) Downloaded 35 times
Last edited by DV on Mon 30 Dec, 2019 19:27, edited 9 times in total.
User avatar
HaRT
Moderator
Posts: 9524
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 109 times
Been thanked: 228 times

Фоновое копирование с помощью FastCopy

Post by HaRT »

 ! Message from: HaRT
Тема перенесена, поскольку была создана в нарушение правил раздела.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
Wave
Posts: 1772
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 4 times
Been thanked: 16 times

Фоновое копирование с помощью FastCopy

Post by Wave »

Удаление с опцией /no_confirm_del — это не очень хорошая идея. Я нарвался (случайно, из-за того, что Alt+Shift+F8 у меня уже занято и забито в рефлексы). Это при том, что вроде не дурак и не чайник. Да и для копирования с перемещением хотя бы опциональное подтверждение нужно.

Не работает с русскими именами и именами с пробелами. Прога стартует и сообщает, что

Code: Select all

FindFirstFileEx(Не удается найти указанный файл.2) : D:\FastCopy385
FindFirstFileEx(Не удается найти указанный файл.2) : D:\TOOLS\Shells\FAR\x64
Хотя это я разбил имя папки, вставив пробел. «FastCopy385 x64»
Пользуюсь ФАРом больше 20 лет © собирательный.
stefanenko
Posts: 126
Joined: Sun 20 Jun, 2010 12:37
Has thanked: 33 times
Been thanked: 4 times

Фоновое копирование с помощью FastCopy

Post by stefanenko »

DV wrote: Sat 16 Nov, 2019 19:23 воспринимается FastCopy как необходимость подтверждения операции над файлами
Вот как раз, при копировании и перемещении очень хотелось бы диалог подтверждения.
stefanenko
Posts: 126
Joined: Sun 20 Jun, 2010 12:37
Has thanked: 33 times
Been thanked: 4 times

Фоновое копирование с помощью FastCopy

Post by stefanenko »

Ну и еще небольшой момент.
К примеру если копировать папку C:\1 в диск C:\ то автоматически создастся копия папки с именем C:\1(1)
Такая себе услуга от программы.

Нужно в настройках это отключать:
  • Option -> Main Settings -> Copy/Move Options -> Use a modified name, if destdir same as src`s parent
User avatar
Xerox
Posts: 393
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 9 times

Фоновое копирование с помощью FastCopy

Post by Xerox »

Так ведь и не работает с пробелами в имени файлов
User avatar
Xerox
Posts: 393
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 9 times

Фоновое копирование с помощью FastCopy

Post by Xerox »

Привожу свой исправленный вариант, проблема с пробелами починена
Last edited by Xerox on Sun 24 Nov, 2019 00:41, edited 2 times in total.
DV
Posts: 427
Joined: Mon 07 Aug, 2006 08:23
Has thanked: 22 times
Been thanked: 15 times

Фоновое копирование с помощью FastCopy

Post by DV »

Спасибо за отзывы! Обновил макрос в шапке, чтобы единичный элемент (файл/папка) с пробелами в имени обрамлялся кавычками. А также добавил информацию про "Use a modified name, if destdir same as src`s parent" в инструкцию.
Буду переделывать макрос, чтобы перед любыми операциями вначале средствами макроса показывался диалог подтверждения, а только потом вызывался FastCopy.
User avatar
Xerox
Posts: 393
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 9 times

Фоновое копирование с помощью FastCopy

Post by Xerox »

DV, Давай, дерзай :)
я сделал тут (не очень глубокий) обзор, и пока мне кажется что этот твой путь наиболее перспективный для копирования
Last edited by Xerox on Sun 24 Nov, 2019 20:11, edited 2 times in total.
DV
Posts: 427
Joined: Mon 07 Aug, 2006 08:23
Has thanked: 22 times
Been thanked: 15 times

Фоновое копирование с помощью FastCopy

Post by DV »

Выложил версию 1.2 с диалогами подтверждения. Заодно чуть ближе познакомился с Lua :)
Поскольку теперь запуск FastCopy отделён от вызова макроса диалогом подтверждения, горячие клавиши изменены на более привычные Ctrl+Shift+F5/F6/F8.
DV
Posts: 427
Joined: Mon 07 Aug, 2006 08:23
Has thanked: 22 times
Been thanked: 15 times

Фоновое копирование с помощью FastCopy

Post by DV »

Версия 1.3 - в диалоги подтверждения добавлена кнопка [FastCopy...], а также добавлены "горячие клавиши" для всех кнопок.
Кнопка [FastCopy...] показывает окно FastCopy без автоматического запуска операций над файлами. Это полезно для изменения настроек FastCopy, редактирования списка переданных файлов или отмены операции.
buniak_a_h
Posts: 2031
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 129 times
Been thanked: 200 times
Contact:

Фоновое копирование с помощью FastCopy

Post by buniak_a_h »

Сразу для следующей версии:
после строки 196
local pathToFastCopy = normpath(Cfg.FastCopyPath:gsub('%%(%w+)%%', win.GetEnv))
вставьте такое:

Code: Select all

  if not mf.fexist(pathToFastCopy) then
   pathToFastCopy = win.SearchPath(nil, mf.fsplit(Cfg.FastCopyPath, 12)) or pathToFastCopy
  end
Это позволит, если после установки FastCopy путь к ней будет прописан в %Path%, обойтись без настройки (которой, кстати, я в макросе не нашёл).
buniak_a_h
Posts: 2031
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 129 times
Been thanked: 200 times
Contact:

Фоновое копирование с помощью FastCopy

Post by buniak_a_h »

Ещё несколько замечаний:
  1. некая ошибка:
    DV wrote: Sat 16 Nov, 2019 19:23 if c == ':' or ((c == '\\' or c == '/') and c == filename.sub(1, 1)) then
    здесь, видимо, д.б. двоеточие … Хотя, может быть вообще заменить на filename:match([[^%a:%\]]) ? Но может я и не прав: смысла сравнивать первый символ со вторым я не понял…
    Но на самом деле знаете ли Вы такую функцию: far.ConvertPath? С флагом CPM_FULL (умолчательным) эта функция преобразовывает имя файла в полный путь. Может, в свете этого функция full_path становится не нужна?
  2. В упомянутой full_path некорректность:
    dir .. '\\' .. filename
    dir = C:\
    filename = qqq (имеется в виду скопировать весь каталог C:\qqq)
    получится C:\\qqq
    Не фатально, но некрасиво...
  3. Пожелание по выкладке (важно!)
    Скрипт довольно большой. Чтобы сделать у себя, дейс твую так:
    • Отметить всё
    • в буфер
    • в ФАРе создаю новый файл в кодировке UTF8
    • пытаюсь вставить из буфера
      ОПА! "Слишком длинная строка" :-(
      Кладите в качестве вложения , чтоб не пришлось задействовать "левые" (в моём случае - Notepad++) программы
Last edited by buniak_a_h on Sun 01 Dec, 2019 21:28, edited 1 time in total.
DV
Posts: 427
Joined: Mon 07 Aug, 2006 08:23
Has thanked: 22 times
Been thanked: 15 times

Фоновое копирование с помощью FastCopy

Post by DV »

buniak_a_h wrote: Sun 01 Dec, 2019 20:29

Code: Select all

pathToFastCopy = win.SearchPath(nil, mf.fsplit(Cfg.FastCopyPath, 12)) or pathToFastCopy
Попробовал, но толку с win.SearchPath почти никакого :(
Например:
1. Запускаю cmd
2. Внутри cmd пишу: set PATH=%PATH%;C:\Progs\FastCopy\FastCopy.exe
3. И затем: cd C:\FAR3 && far.exe
4. Так вот, win.SearchPath не находит путь C:\Progs\FastCopy\FastCopy.exe, который я прописал в переменной %PATH% непосредственно перед запуском FAR !

А чем добавлять этот путь в системную переменную %PATH%, так уже проще модифицировать скрипт, как сказано в шапке в секции "Особенности реализации":
Переменная FastCopyPath (внутри макроса) указывает путь к FastCopy.exe
Last edited by DV on Sun 01 Dec, 2019 22:09, edited 1 time in total.
buniak_a_h
Posts: 2031
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 129 times
Been thanked: 200 times
Contact:

Фоновое копирование с помощью FastCopy

Post by buniak_a_h »

DV wrote: Sun 01 Dec, 2019 21:46 Попробовал, но тольку с win.SearchPath почти никакого
«Почти» - это как?
На самом деле после установки прописал в переменную, добавил путь в path (в свойствах компа! С cmd окружение странно взаимодействует то ли с ФАРом, то ли с ConEmu, то ли с консолью), добавил 3 строчки. И всё заработало.
DV wrote: Sun 01 Dec, 2019 21:46 проще модифицировать скрипт
Это была последняя версия? Тогда - да. Иначе проще в следующеё версии добавить указанные строки и не париться с редактированием скрипта при каждом выходе версии. Ну, или делать настройку (не уверен, что это - менее трудоёмко. Хотя было бы самым правильным. Заодно и хоткеи менять можно было бы.).
Тут главное - "не навреди". Три строчки не навредят, а помочь могут.
DV wrote: Sun 01 Dec, 2019 21:46 чем добавлять этот путь в системную переменную %PATH%
В системную переменную обычно добавляют корректно написанные инсталляторы. Китайцы - авторы FastCopy - не озаботились, но это - пока; могут и добавить.
Можно, конечно, искать в Start-МЕНЮ (у меня есть такой скрипт, могу одолжить). Это было, наверно, удобно, но конкретно FastCopy можно устанавливать без образования ярлыков Extract only. Можно при первом запуске сигнализировать и спрашивать путь; затем запоминать его. Это вообще было бы универсально. А так, как сейчас -
И, кстати, может, стоило бы запускать её с SW_SHOWMINIMIZED или даже SW_HIDE - раз уж "фоновое"
Post Reply

Return to “Обсуждение макросов”