Вызов макроса для выделенных файлов Topic is solved

Столкнулись с проблемой в использовании Far? Здесь можно получить помощь.
Post Reply
Volodya
Posts: 268
Joined: Thu 31 Mar, 2005 19:41
Has thanked: 30 times

Вызов макроса для выделенных файлов

Post by Volodya »

Имеется макрос, который расчитан на работу с одним файлом. Хочется применить его ко всем выделенным файлам (последовательно). Это легко делается через CtrlG. lua:eval("AltShiftV",2) (AltShiftV - для вызова моего макроса). Проблема в том, что данную команду надо выбирать из списка прошлых команд. Если повесить на F2 просто команду, то она выполняется только для одного файла, что естественно. Вопрос как сделать вызов макроса для всех выделенных файлов?
Dzirt2005
Posts: 326
Joined: Fri 29 Feb, 2008 12:11
Been thanked: 10 times

Вызов макроса для выделенных файлов

Post by Dzirt2005 »

Volodya, вам поможет метасимвол !&
Подробнее можно почитать во встроенной справке
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Вызов макроса для выделенных файлов

Post by buniak_a_h »

Volodya, макрос чем хорош: его можно подстроить "под себя". В Вашем случае я бы легко переделал его таким образом, чтобы он принимал либо имя текущего файла (если нет отмеченных), либо в цикле выполнял акцию для отмеченных. Из Вашего вызова не видно, где Вы передаёте собственно имя файла; если макрос делает нечто для APanel.Current, то CtrlG (и метасимвол !&) Вам не помогут.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Вызов макроса для выделенных файлов

Post by buniak_a_h »

Volodya, если влом самому макросить, то у меня для таких случаев (не редких!) есть "рыба"

Code: Select all

Macro{
  id="8D4918FA-D041-4CB4-A79A-D204988D98D6"; -- Заменить на уникальный GUID
  area="Shell";
  key="AltShiftV";
  description="Тест для https://forum.farmanager.com/viewtopic.php?p=169603#p169603";
  flags=""; -- EnableOutput RunAfterFARStart EmptyCommandLine NotEmptyCommandLine NoFilePanels NoFilePPanels NoPluginPanels NoPluginPPanels NoFolders NoPFolders NoFiles NoPFiles Selection PSelection NoSelection NoPSelection EVSelection NoEVSelection NoSendKeysToPlugins
  action=function(data)
   local aDone={}
   for i=1, APanel.Selected and APanel.SelCount or 1 do
    local FName = panel.GetSelectedPanelItem(nil, 1, i).FileName
    if not far.Show('14: FileName='..FName) then break end -- Здесь заменять на реальное действие
    aDone[#aDone+1] = '"' .. FName .. '"'
   end
   Panel.Select(0, 0, 2, table.concat(aDone, '\n'))
  end;
}
Volodya
Posts: 268
Joined: Thu 31 Mar, 2005 19:41
Has thanked: 30 times

Вызов макроса для выделенных файлов

Post by Volodya »

buniak_a_h, спасибо за рыбу. Макрос о котором я говорил Shell_FileTime из набора SimSU

У меня он перевешен на AltShiftV.
buniak_a_h wrote: Wed 05 Jan, 2022 12:42 я бы легко переделал его таким образом, чтобы он принимал либо имя текущего файла (если нет отмеченных), либо в цикле выполнял акцию для отмеченных.
Я был бы признателен, если бы вы его модифицировали указанным образом.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Вызов макроса для выделенных файлов

Post by buniak_a_h »

Volodya wrote: Fri 07 Jan, 2022 01:09 Я был бы признателен, если бы вы его модифицировали указанным образом.
Поменял только процедуру Paste (установка времени во все отмеченные, если таковые есть):
Shell_FileTime.lua
(5.29 KiB) Downloaded 101 times
Просто мне кажется, что для Copy (запомнить время) смысла нет, а с третьей процедурой ("Обновление даты/времени записи родительских папок" я не разбирался но тоже, вроде, нет смысла
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Вызов макроса для выделенных файлов

Post by buniak_a_h »

Post Reply

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