Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » FAR Manager (часть 5)

Модерирует : gyra, Maz

Maz (15-01-2020 17:38): FAR Manager (часть 6)  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
-- Copy files with recovery FoldersTree from FullPath FileNames
-- v1.2
 
local DisabledPlugins={
--  [win.Uuid("B77C964B-E31E-4D4C-8FE5-D6B0C6853E7C")]=true -- TmpPanel
}
 
 
local re=regex.new([[^(?:[A-Z]:|\\)\\(.*?)([^\\]+)$]])
local ra=regex.new([[^(?:[A-Z]:|\\)\\(.+)$]])
local function cf(PP,GPI)
  local res,FPath,FName = false
  if GPI.FileAttributes:find("d")
  then FPath=ra:match(GPI.FileName)
  else FPath,FName = re:match(GPI.FileName)
  end
  local cds=PP
  if FPath and FPath~="" then cds=cds.."\\"..FPath
    if cds:sub(-1,-1)=="\\" then cds=cds:sub(1,-2) end
    res=win.CreateDir(cds,"t")
    if not res then far.Message(FPath,"Warning! Directory not created",nil,"w") end
  end
  if FName and res~=nil then
    res=win.CopyFile(GPI.FileName,cds.."\\"..FName)
    if not res then far.Message(FName,"Warning! File not copied",nil,"w") end
  end
  return res
end
 
Macro {
description="Copy files with recovery FoldersTree from FullPath FileNames"; area="Shell"; key="ShiftF5";
--condition = function() return APanel.Format=="Branch" or APanel.Format=="Temporary panel" or APanel.Format=="LF Search: temporary panel" or APanel.Format=="Search results" end;
condition = function() return panel.GetPanelInfo(nil,1).ItemsNumber>1 and ra:match(panel.GetPanelItem(nil,1,2).FileName) and PPanel.FilePanel and not PPanel.Plugin and not DisabledPlugins[panel.GetPanelInfo(nil,1).OwnerGuid] end;
action = function()
  --local ttime=far.FarClock()
  local t,PP,ItemsNumber = {},PPanel.Path0
  if not APanel.Selected and APanel.Current~=".."
  then ItemsNumber=1 panel.SetSelection(nil,1,panel.GetPanelInfo(nil,1).CurrentItem,true)
  else ItemsNumber=panel.GetPanelInfo(nil,1).SelectedItemsNumber
  end
  for Item=1,ItemsNumber do
    local GPI=panel.GetSelectedPanelItem(nil,1,Item)
    local res=cf(PP,GPI)
    if not res then break end
    table.insert(t,Item)
  end
  panel.ClearSelection(nil,1,t)
  panel.RedrawPanel(nil,1)
  --far.Message(far.FarClock()-ttime,"mcs")
end
}
 

Всего записей: 3484 | Зарегистр. 16-06-2007 | Отправлено: 11:20 03-09-2019
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Программы » FAR Manager (часть 5)
Maz (15-01-2020 17:38): FAR Manager (часть 6)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru