|
|
| Название | FindExclude |
| Имя файла (*.txt) | FindExclude.txt |
| Описание | Исключает из поиска файлы и директории |
| Автор | Вахмурка |
| Параметры | - |
| Вызываемые плагины | win, ini, vec, childwin |
| Иконка |
|
| Версия | 1.1 |
| Дата обновления | 05.02.2008 |
local CR = esc(?+\r+, ?+\+)
local Quote = esc(?+"+, ?+\+)
local hwnd = win.handle("c=TTOTAL_CMD")
;"\ini\" - поддиректория scripts, которую необходимо создать самостоятельно
local Settings = scriptfolder ++ "\ini\FindExclude.ini"
local Files = ini.enum_keys(Settings, "Files")
local FileCounter = line(Files, 0)
local Dirs = ini.enum_keys(Settings, "Dirs")
local DirCounter = line(Dirs, 0)
local Result, Str, i, Temp
FMask = vec.create(FileCounter)
if(FMask == 0) do
messagebox("ok error", "Vector not created", "VEC plugin error #1")
quit
endif
DMask = vec.create(DirCounter)
if(DMask == 0) do
messagebox("ok error", "Vector not created", "VEC plugin error #2")
quit
endif
for(i = 1; i <= FileCounter; i++)
Temp = line(Files, i)
Str = ini.get(Settings, "Files", Temp)
FMask[i - 1] = Str
Result = Result ++ "Files: " ++ Quote ++ Temp ++ Quote ++ ", mask: " ++ Quote
Result = Result ++ Str ++ Quote ++ CR
endfor
for(i = 1; i <= DirCounter; i++)
Temp = line(Dirs, i)
Str = ini.get(Settings, "Dirs", Temp)
DMask[i - 1] = Str
Result = Result ++ "Directories: " ++ Quote ++ Temp ++ Quote ++ ", path: " ++ Quote
Result = Result ++ Str ++ Quote ++ CR
endfor
pickstring(Result, "Pick Item(s) to Exclude", 1)
DirCounter = word(_pickedline_, 0)
if(not _pickedline_)
quit
Files = ifelse(ini.get(Settings, "Options", "Asterisk"), "*.* |", "|")
Dirs = ""
for(i = 1; i <= DirCounter; i++)
Temp = word(_pickedline_, i)
if(Temp <= FileCounter) do
Files = Files ++ " " ++ FMask[Temp - 1]
else
Dirs = Dirs ++ " " ++ DMask[Temp - FileCounter - 1] ++ "\"
endif
endfor
vec.destroy(FMask)
vec.destroy(DMask)
Str = Files ++ Dirs
win.postmessage(hwnd, 0x400+51, 501, 0)
Temp = ini.get(Settings, "Options", "FileDir")
wait.for(activewindow("c=TFindFile"))
Files = win.handle("c=TFindFile")
if(Temp != 2) do
keys +{tab}{right}{tab 4}{space}{tab 2}{space}
if(Temp)
keys {space}
keys {tab 6}{left}
endif
Dirs = childwin.handle(Files, 23)
win.settext(Dirs, Str)
for(childwin.gettext(Dirs) != Str)
win.settext(Dirs, Str)
endfor
if(ini.get(Settings, "Options", "StartNow"))
keys {enter}
При поиске файлов бывает удобно исключить из поиска определенные файлы и директории. Делается это с целью, во-первых, сократить время поиска, а во-вторых, избавить результаты от заведомо лишней информации. Например, если мы ищем некую осмысленную строку текста, то разумно исключить из поиска мультимедийные файлы и, скажем, корзины. Однако ввод таких ограничений в строку поиска может занять заметное время.
Казалось бы, можно воспользоваться шаблонами поиска (saved searches). Но представим себе, что имеется пять директорий, которые чаще всего (но не всегда) приходится исключать. А что если нам захочется исключить не все пять, а только первую, вторую и четвертую? Придется создавать слишком много шаблонов, в которых недолго и запутаться.
Скрипт позволяет, используя те же (или другие) директории, формировать из них список исключений непосредственно перед началом поиска, исходя из текущей задачи.
Прежде всего необходимо создать файл конфигурации или воспользоваться моим в качестве примера. Например, если PowerPro установлена в директорию c:\Program Files\PowerPro, то полный путь файла конфигурации будет иметь вид c:\Program Files\PowerPro\scripts\ini\FindExclude.ini.
[Options]
FileDir=0
;0 - только файлы, 1 - только директории, 2 - все
Asterisk=0
;если 1, указать *.* в начале
StartNow=0
;если 1, запустить поиск сразу
[Files]
Graphics=*.jp?g
Executable=*.exe
Movie=*.mpg *.wmv *.avi
[Dirs]
VisualStudio=VStudio
Bins=Recycle?
Смысл ключей раздела [Options] понятен из комментариев.
Ключи раздела [Files] содержат обозначения тех файлов, которые нужно исключить из поиска, а значения ключей - соответствующие маски. Для одного ключа можно указывать несколько масок, разделенных пробелами.
С ключами раздела [Dirs] все немного иначе. Во-первых, не следует указывать полный путь - только имя директории (допустимы символы ? и *). Во-вторых, не рекомендуется присваивать одному ключу более одного значения.
После внесения в конфигурацию тех файлов и директорий, которые чаще всего приходится исключать из поиска, можно запускать скрипт. Затем в списке выбираем произвольное число пунктов и жмем ОК.
|
На главную |
|
Все о Total Commander |
|
PowerPro |
|
PowerPro & Total Commander |