; 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)
;=======================================