_FO_FileSearch
Возвращает список файлов в указанном каталоге.
#Include <FileOperations.au3>
_FO_FileSearch ( $sPath [, $sMask = '*' [, $fInclude=True [, $iDepth=125 [, $iFull=1 [, $iArray=1 [, $iTypeMask=1 [, $sLocale=0[, $vExcludeFolders = ''[, $iExcludeDepth = -1]]]]]]]]] )
Параметры
$sPath | Путь поиска |
$sMask |
[необязательный] Маска, в зависимости, от параметра $TypeMask может быть либо полная с использованием символов "*" и "?" (по умолчанию), либо с указанием расширения файлов. В качестве разделителя используется символ "|". По умолчанию '*' - найти все файлы |
$fInclude |
[необязательный] Включить или исключить указанные в маске True - найти указанные в маске (по умолчанию) False - найти все кроме указанных в маске |
$iDepth |
[необязательный] Глубина вложенности каталогов (0 - корневой каталог, 125 - по умолчанию) |
$iFull |
[необязательный] Пути в возвращаемых данных 0 - относительный 1 - (по умолчанию) полный путь 2 - имена файлов с расширением 3 - имена файлов без расширения |
$iArray |
[необязательный] Определяет вывод результата, массив или список 0 - список с разделителем @CRLF 1 - (по умолчанию) массив, в котором $array[0]=количество файлов 2 - массив, в котором $array[0] содержит первый файл |
$iTypeMask |
[необязательный] Тип маски 0 - автоопределение типа маски 1 или 2 1 - (по умолчанию) принудительно использовать маску вида *.is?|s*.cp* (то есть можно указать имя файла без символов * или ? и без расширения и будет найдено) 2 - принудительно маска вида tmp|bak|gid (по расширению, то есть только файлы с указанным расширением). Параметр $sLocale в этом случае игнорируется. |
$sLocale |
[необязательный] Учитывать регистр букв при поиске. -1 - Не учитывать регистр только для латинских букв 0 - (по умолчанию) Не учитывать регистр, (для всех символов). 1 - Учитывать регистр (для всех символов). <символы> - не учитывать регистр указанного диапазона символов локального языка, включая латинские, например 'А-яЁё'. Латинские указывать не требуется, они по умолчанию включены. |
$vExcludeFolders |
[необязательный] Исключает папки из поиска. Перечислять имена папок через "|", например "имя1|имя2|имя3". |
$iExcludeDepth |
[необязательный] Уровень вложенности, до которого работает исключение, указанное в параметре $vExcludeFolders. Обычно 0 - для корневой папки. По умолчанию -1, что означает отключено. |
Возвращаемое значение
Успех: | Возвращает список файлов. |
Ошибка: | Возвращает пустую строку и устанавливает @error: |
@error: | 1 - неверный путь |
2 - неверная маска | |
3 - ничего не найдено |
Примечания
В обязательном порядке проверяйте @error, так как при отсутствии найденных файлов использование массива приводит к ошибке, которая может быть не выявлена при тестах.См. также
_FO_CorrectMask, _FO_FolderSearchПример
; AZJIO
; http://www.autoitscript.com/forum/topic/133224-filesearch-foldersearch/
#include <Array.au3> ; для _ArrayDisplay
#include <FileOperations.au3>
; Файлы
;=======================================
; все файлы папки WINDOWS в виде массива
$timer = TimerInit()
$aFileList = _FO_FileSearch(@WindowsDir)
$timer = Round(TimerDiff($timer) / 1000, 2) & ' сек'
_ArrayDisplay($aFileList, $timer & ' - все файлы')
;=======================================
; только файлы exe и dll папки WINDOWS в виде списка
$timer = TimerInit()
$sFileList = _FO_FileSearch(@WindowsDir, 'exe|dll', True, 0, 1, 0, 0)
$timer = Round(TimerDiff($timer) / 1000, 2) & ' сек'
MsgBox(0, $timer & ' - exe;dll', $sFileList)
;=======================================
; все файлы, кроме exe и dll папки WINDOWS в виде списка с относительными путями
$timer = TimerInit()
$sFileList = _FO_FileSearch(@WindowsDir, 'exe|dll', False, 0, 0, 0, 0)
$timer = Round(TimerDiff($timer) / 1000, 2) & ' сек'
MsgBox(0, $timer & ' - кроме exe|dll, относит. пути', $sFileList)
;=======================================
; все файлы, кроме exe и dll папки WINDOWS в виде списка с именами файлов без расширения
$timer = TimerInit()
$sFileList = _FO_FileSearch(@WindowsDir, 'exe|dll', False, 0, 3, 0, 0)
$timer = Round(TimerDiff($timer) / 1000, 2) & ' сек'
MsgBox(0, $timer & ' - кроме exe|dll, имя без расширения', $sFileList)
;=======================================
; только файлы tmp и bak и gid папки WINDOWS в виде массива с относительными путями, массив без указания количества файлов
$timer = TimerInit()
$aFileList = _FO_FileSearch(@WindowsDir, 'tmp|bak|gid', True, 125, 0, 2, 0)
$timer = Round(TimerDiff($timer) / 1000, 2) & ' сек'
_ArrayDisplay($aFileList, $timer & ' - tmp|bak|gid, относит. пути, первый эл. файл')
;=======================================
; только файлы tmp и bak и gid папки WINDOWS в виде массива с именами файлов c расширения
$timer = TimerInit()
$aFileList = _FO_FileSearch(@WindowsDir, 'tmp|bak|gid', True, 125, 2, 2, 0)
$timer = Round(TimerDiff($timer) / 1000, 2) & ' сек'
_ArrayDisplay($aFileList, $timer & ' - tmp|bak|gid, имена с расширением')
;=======================================
; Недопустимый символ в пути
$aFileList = _FO_FileSearch('C:\WIN>DOWS', '*')
If @error Then
MsgBox(0, 'Ошибка', 'Код ошибки: ' & @error)
; Exit
EndIf
;=======================================
; только файлы по маске *.is?|s*.cp* папки WINDOWS в виде массива
$timer = TimerInit()
$aFileList = _FO_FileSearch(@WindowsDir, '*.is?|s*.cp*')
$timer = Round(TimerDiff($timer) / 1000, 2) & ' сек'
_ArrayDisplay($aFileList, $timer & ' - *.is?|s*.cp*')
;=======================================
; только файлы по маске shell*.*;config.* папки WINDOWS в виде массива
$timer = TimerInit()
$aFileList = _FO_FileSearch(@WindowsDir, 'shell*.*|config.*')
$timer = Round(TimerDiff($timer) / 1000, 2) & ' сек'
_ArrayDisplay($aFileList, $timer & ' - shell*.*|config.*')
;=======================================
; только файлы exe и dll папки WINDOWS в массив с помощью регулярного выражения
$timer = TimerInit()
$sFileList = _FO_FileSearch(@WindowsDir, '*', True, 125, 1, 0)
$aFileList = StringRegExp($sFileList, '(?mi)^(.*\.(?:exe|dll))(?:\r|\z)', 3)
$timer = Round(TimerDiff($timer) / 1000, 2) & ' sec'
_ArrayDisplay($aFileList, UBound($aFileList) & ' - ' & $timer & ' - RegExp')
;=======================================
; Папки и файлы
;=======================================
; папки и файлы в корне каталога WINDOWS, вывод в виде сообщения
$sList = _FO_FolderSearch(@WindowsDir & '\Web', '*', True, 0, 0, 0) & @CRLF & _FO_FileSearch(@WindowsDir & '\Web', '*', True, 0, 0, 0)
MsgBox(0, 'папки и файлы', $sList)
;=======================================