Folder.Find
Описание
Поиск папок в локальной системе.
ПараметрыStartFolder
(строка) Путь к папке, в которой нужно искать.
Folder
(строка) Имя папки, которую нужно искать. Для поиска папок, что соответствуют указанному шаблону, в этом поле можно использовать подстановочные знаки * и ?.
Recurse
(логический) Делать ли рекурсию вложенных папок во время поиска:
CallbackFunction
(функция) Имя функции, которая будет вызываться всякий раз, когда происходит процесс поиска. (Эту возвращающуюся функцию можно использовать для отображения хода выполнения операции поиска, своим собственным способом.)
Примечание: Если в CallbackFunction установлено значение nil, тогда информация о протекании процесса будет отправлена во встроенное диалоговое окно состояния, предполагая что оно в настоящий момент видимое. (Можно показать или скрыть диалоговое окно состояния действиями StatusDlg.Show или StatusDlg.Hide соответственно.) Возвращающаяся функция должна иметь возможность принять следующие параметры: CurrentPath(строка) Текущий путь поиска. Возвращающая функция должна возвращать логическое значение (истина (true) или ложь (false)), показывающее следует ли продолжать операцию поиска:
ВозвратResultVariable
(таблица) Таблица, содержащая пути ко всем найденным папкам. Если нет найденных папок или происходит ошибка, возвращается значение nil. Можно использовать Application.GetLastError для определения случился ли отказ в работе этого действия и почему.
При добавлении действия из редактора скрипта, можно использовать это поле для определения переменной, которая возвращает значение, сохраняющееся в ней.
Смотрите также: Связанные действия
ПримерыПример 1ImageFolders = Folder.Find(_SourceFolder, "*Images*", true, ShowSearchProgress);Поиск всех папок, в имени которых содержится "Images", внутри папки, откуда запущено приложение и сохраняем их пути в таблице по имени ImageFolders. Поскольку параметр Recurse установлен как истина (true), действие будет вести поиск внутри вложенных папок. Функция по имени ShowSearchProgress будет вызываться всякий раз, когда будет выполняться операция поиска. Пример 2found = Folder.Find( Shell.GetFolder(SHF_MYDOCUMENTS), "Plant Data", false); if (found) then Dialog.Message("Found one!", "The first folder found was:" .. found[1]); endПоиск всех папок по имени "Plant Data", в корне пользовательской папки Мои документы и сохраняем их пути в таблице, названной "found". Затем в примере проверяем эту таблицу, чтобы узнать, есть ли в ней какие-либо найденные папки, (если их нет, таблица была бы установлена в ноль действием Folder.Find) и если есть, показываем диалоговое окно сообщения, чтобы показать путь к первой найденной папке. Пример 3-- Set the callback function (used by action Folder.Find) -- Устанавливаем возвращающуюся функцию (используемую действием Folder.Find) function FindCallBack(CurrentFolder) -- Show the cancel button -- Показываем кнопку Отмена ( cancel) StatusDlg.ShowCancelButton(true, "Cancel"); -- Set the status dialog title, message, and status text -- Задаем название диалогового окна состояния, сообщение и текст состояния StatusDlg.SetTitle("Searching . . . "); StatusDlg.SetMessage("Please wait. Search is in progress."); StatusDlg.SetStatusText("Current Folder: " .. CurrentFolder); -- Check if the user pressed cancel -- Проверяем, не нажал ли пользователь кнопку Отмена (cancel) cancel = StatusDlg.IsCancelled(); if cancel then -- Cancel was pressed, stop the current operation -- Кнопка Отмена нажата, останавливаем текущую операцию return false; else -- Cancel was not pressed, continue -- Кнопка Отмена не нажата, продолжаем return true; end end -- Set the drive to search -- Задаем диск для поиска drive = "c:\\"; -- Set the folder to search for -- Задаем папку, которую будем искать folder = "windows"; -- Search the specified drive for folders named "windows" -- Display the status dialog -- Поиск папки по имени "windows" на указанном диске -- Показываем диалоговое окно состояния StatusDlg.Show(0, false); search_results = Folder.Find(drive, folder, true, FindCallBack); -- Check to see if an error occurred during the search. If it did, display the error message. -- Проверяем, не было ли ошибки при поиске. Если была, показываем сообщение об ошибке. error = Application.GetLastError(); StatusDlg.Hide(); if error ~= 0 then Dialog.Message("Error", _tblErrorMessages[error]); else -- If no directories were found, inform the user -- Если нет найденных папок, информируем пользователя if (search_results == nil) then Dialog.Message("Notice", "There are no folders named '" .. folder .. "' on drive '" .. drive .. "'."); -- If folders were found, display a dialog containing a list of their locations. -- Если папки были найдены, показываем диалоговое окно, содержащее список их размещения. else message = "A folder named '" .. folder .. "' was found at the following location(s):\r\n\r\n"; for index, path in pairs(search_results) do message = String.Concat(message, path .. "\r\n"); end Dialog.Message("File Search Results", message, MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1); end endВ этом примере используется действие Folder.Find для поиска всех экземпляров определенной папки на жестком диске пользователя. Как только поиск завершится, пользователю предоставляется список всех найденных путей. Возвращающаяся функция используется для настройки "види" диалогового окна состояния.
Смотрите также: Связанные действия
|