MultiFind

Название MultiFind
Имя файла (*.txt) MultiFind.txt
Описание Вызывает окно поиска в директориях, соответствующих вкладкам в текущей панели
Автор Вахмурка
Параметры -
Вызываемые плагины win, tc, childwin, file
Иконка
Версия 2.0
Дата обновления 08.06.2009
global Config = "путь/wincmd.ini"
global TT = cl.Create("Tabs", 1)
local hwnd = win.handle("c=TTOTAL_CMD")
local Panel = ifelse(tc.active(hwnd) == "left", 1, 2)
win.postmessage(hwnd, 0x400+51, 524, 0)
win.sendmessage(hwnd, 0x400+51, 580, 0)
local i, j, Target, Num

;Sub_ReadTabs - имя скрипта ReadTabs
if(runfile.Subs\Sub_ReadTabs(tc.active(hwnd)) == 1) do
	win.sendmessage(hwnd, 0x400+51, 501, 0)
	quit
endif

local Str = file.readall(arg(1))

local v = vec.createfromlines(Str)
if(v <= 0) do
	messagebox("ok error", "Vector not created", "VEC plugin error #1")
	quit
endif

for(i = 0; i < TT.Length; i++)
	Target = TT.GetId(i)
	Str = TT.GetMiddleCmd(i)
	if(validpath(Target) && Str == Panel)
		Num = Num ++ Target ++ ";"
endfor

Num = remove(Num, -1)
win.postmessage(hwnd, 0x400+51, 501, 0)
wait.for(activewindow("c=TFindFile"))
Panel = win.handle("c=TFindFile")
Target = childwin.handle(Panel, 22)
win.settext(Target, Num)

Комментарии:

Внимание! Скрипт не работает в Total Commander 7.5 pb1 и pb2!

Как быть, если один и тот же поиск необходимо провести во множестве совершенно разных директорий? Выхода два. Во-первых, можно искать в каждой директории отдельно. Если их десяток, это может занять слишком большое время. Во-вторых, можно запустить поиск по всем логическим дискам. Такая операция займет времени не меньше, кроме того, в результат поиска может попасть то, что нас заведомо не интересует.

Перед запуском скрипта необходимо сосредоточить на одной из панелей все вкладки, в которых следует проводить поиск. Скрипт лишь вводит в строку "Search in" имена всех директорий. Маски файлов и/или текст приходится, понятное дело, вводить самостоятельно.


На главную Все о Total Commander PowerPro Все скрипты