Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Новый участник


Сообщения: 27
Благодарности: 11

Профиль | Отправить PM | Цитировать


Цитата Creat0R:
Вот так: »

Код: Выделить весь код
#Include <Array.au3>


$begin1 = TimerInit()
$sFile = FileList(@WindowsDir, "*.ini")
$dif1 = TimerDiff($begin1)
_ArrayDisplay($sFile,$dif1)


Func FileList($sPath, $inFilter = '*', $exFilter = '');$includeFilter='*.txt,*.htm'   $excludeFilter='www,asp,desktop'
	$sPath = StringRegExpReplace($sPath, '\\+$', '')
	Local $aRetArray[1], $sFindNextFile, $sCurrentPath, $iFL
	Global $FolderList[2]
	$aRetArray[0] = 0
	$FolderList[0] = 1
	$FolderList[1] = $sPath
	Local $sFindFirstFile = FileFindFirstFile($sPath & "\*")
	If @error = 1 Then Return SetError(1, 0, -1)
	#Region
	If StringRight($inFilter, 1) = ',' Then $inFilter = StringTrimRight($inFilter, 1)
	$inFilter = StringReplace($inFilter, '^', '\^')
	$inFilter = StringReplace($inFilter, '.', '\.')
	$inFilter = StringReplace($inFilter, '(', '\(')
	$inFilter = StringReplace($inFilter, ')', '\)')
	$inFilter = StringReplace($inFilter, '[', '\[')
	$inFilter = StringReplace($inFilter, ']', '\]')
	$inFilter = StringReplace($inFilter, '+', '\+')
	$inFilter = StringReplace($inFilter, '$', '\$')
	$inFilter = StringReplace($inFilter, '*', '.*')
	$inFilter = '(?i)^' & StringReplace($inFilter, ',', '$|^') & '$'
	If StringInStr($exFilter, ',') > 0 And $exFilter <> '' Then
		If StringRight($exFilter, 1) = ',' Then $exFilter = StringTrimRight($exFilter, 1)
		$exFilter = StringReplace($exFilter, ',', '|')
		$exFilter = StringReplace($exFilter, '.', '\.')
		$exFilter = StringReplace($exFilter, '(', '\(')
		$exFilter = StringReplace($exFilter, ')', '\)')
		$exFilter = StringReplace($exFilter, '[', '\[')
		$exFilter = StringReplace($exFilter, ']', '\]')
		$exFilter = StringReplace($exFilter, '+', '\+')
		$exFilter = StringReplace($exFilter, '$', '\$')
		$exFilter = '(?i)(' & StringReplace($exFilter, '^', '\^') & ')'
	EndIf
	#EndRegion
	$iFL = 1
	Do
		$sFindFirstFile = FileFindFirstFile($FolderList[$iFL] & "\*")
		If @error = 0 Then
			While 1
				$sFindNextFile = FileFindNextFile($sFindFirstFile)
				If @error = 1 Then ExitLoop
				$sCurrentPath = $FolderList[$iFL] & "\" & $sFindNextFile
				If StringInStr(FileGetAttrib($sCurrentPath), "D") Then;папка
					$FolderList[0] += 1
					If UBound($FolderList) < $FolderList[0] + 1 Then ReDim $FolderList[$FolderList[0] + 1000]
					$FolderList[$FolderList[0]] = $sCurrentPath
				Else;файл
					If StringRegExp($sFindNextFile, $inFilter) = 1 And ($exFilter = '' Or StringRegExp($sFindNextFile, $exFilter) = 0) Then
						$aRetArray[0] += 1
						If UBound($aRetArray) < $aRetArray[0] + 1 Then ReDim $aRetArray[$aRetArray[0] + 1000]
						$aRetArray[$aRetArray[0]] = $sCurrentPath
					EndIf
				EndIf
			WEnd
		EndIf
		FileClose($sFindFirstFile)
		$iFL += 1
	Until $iFL > $FolderList[0]
	ReDim $aRetArray[$aRetArray[0] + 1]
	ReDim $FolderList[$FolderList[0] + 1]
	Return $aRetArray
EndFunc   ;==>FileList
Этот скрипт осматривает папку WindowsDir в 6 раз быстрее, чем из предыдущего поста
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:36, 21-01-2010 | #14