Макрос распаковки архива в текущую папку

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
Post Reply
Chav
Posts: 5
Joined: Fri 15 Feb, 2013 19:54

Макрос распаковки архива в текущую папку

Post by Chav »

Приветствую!
Совсем недавно начал работать с Фаром. Обнаружил неудобство для себя - по умолчанию архивы распаковываются в папку противоположной панели. В опциях не нашел настройки папки по умолчанию. Подумал, что можно было б использовать утилиту jar. Помогите, пожалуйста написать макрос, который выполняет
jar xf [архив под курсором]
.
Chav
Posts: 5
Joined: Fri 15 Feb, 2013 19:54

Re: Макрос распаковки архива в текущую папку

Post by Chav »

Code: Select all

jar xf [i]то, что под курсором[/i]
Не нашел кнопки редактирования сообщения..
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: Макрос распаковки архива в текущую папку

Post by Shmuel »

Для этого можно обойтись без макроса. Читайте справку об ассоциациях типов файлов (меню Commands, выбираем File Associations, нажимаем F1).
Chav
Posts: 5
Joined: Fri 15 Feb, 2013 19:54

Re: Макрос распаковки архива в текущую папку

Post by Chav »

А как в команде указать файл под курсором?
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: Макрос распаковки архива в текущую папку

Post by Shmuel »

В справке кликнуть там где описание нажатия Ins, далее Tab Enter.
Chav
Posts: 5
Joined: Fri 15 Feb, 2013 19:54

Re: Макрос распаковки архива в текущую папку

Post by Chav »

Спасибо! Почти получилось. !.! не хочет выводить полное имя файла. Для roller-weblogger-5.0.1-source.zip выводит
jar xf ROLLER~2.ZIP
. Команда
jar xf !.!
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Макрос распаковки архива в текущую папку

Post by John Doe »

"!\!.!"
В кавычках
Chav
Posts: 5
Joined: Fri 15 Feb, 2013 19:54

Re: Макрос распаковки архива в текущую папку

Post by Chav »

Спасибо, работает

UPD: с !.! - это я затупил, все работает
stealzy
Posts: 6
Joined: Sat 07 Nov, 2015 10:23
Been thanked: 2 times

Макрос распаковки архива в текущую папку

Post by stealzy »

90% случаев распаковываю в ту же папку, не меняя имя для распакованного.
Хотелось иметь прозрачную тихую распаковку,
т.е. находясь в архиве, нажать кнопку - и тут же оказаться в папке, курсор над тем же элементом.
Результат:

Code: Select all

----------------------------------------------------------------------------------------------------
-- Silent Extract the Archive in the Same Folder v. 1.0. © stealzy
----------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------
-- Не сработает, если на панели есть выделенные элементы.
-- Иначе молча распакует архив
--   под курсором, или в котором находится курсор,
--   в тот же каталог.
-- Eсли курсор стоял:
-- Над архивом  -  поставит курсор на распакованном объекте.
--     При вкл. опции arclite'a "Перейти в целевой архив" переходит внутрь распак. архива.
-- Внутри архива - войдет в распакованный архив и установит курсор на тот же элемент,
--     на котором он стоял в архиве.
----------------------------------------------------------------------------------------------------
Macro {
area = "Shell"; key = "CtrlShiftF2"; description = "Silent Extract";
action = function()
  posRelArc = is_proceed()
  if posRelArc ~= "dont proceed" then
    while APanel.Plugin do
      if (APanel.ItemCount == 2) then
        unpackName = Panel.Item(0,2,0)
      else
        unpackName = nil
      end
      namePosInArc = APanel.Current
      Keys("CtrlPgUp")
    end
    if unpackName == nil then
      unpackName = mf.fsplit(APanel.Current, 0x04)
    end

    pathBefore = APanel.Path
    Keys("ShiftF2 CtrlShift[ Enter") --print(APanel.Path.."\\")
    pathAfter = APanel.Path

    if pathBefore ~= pathAfter then
      Panel.SetPos(0, namePosInArc)
    else
      itemIdx = Panel.FExist(0, unpackName)
      if itemIdx~=0 then
        Panel.SetPos(0, unpackName)
        if posRelArc == "inside" then
          Keys("CtrlPgDn")
          Panel.SetPos(0, namePosInArc)
        end
      end
    end

  end
end;
}
-----------------------------
function is_proceed()
  if APanel.SelCount ~= 0 then
    return "dont proceed"
  end
  if not APanel.Plugin then
    if APanel.Folder then
      return "dont proceed"
    else
      Keys("CtrlPgDn")
      if APanel.Plugin then
        return "outside"
      else
        return "dont proceed"
      end
    end
  else
    return "inside"
  end
end
------------------------------
Пока не поддерживает положение курсора вне корня архива.
quiet unpack the archive in the same folder
Post Reply

Return to “Нужна помощь”