|
Название | 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 | Все скрипты |