Версия AutoIt 4.2.0
Добрый день, Помогите переделать код что бы помимо адреса и имени файла выводил еще и размер файлов + окно сообщения с именем самого большого файла и его размера. Спасибо
Добрый день, Помогите переделать код что бы помимо адреса и имени файла выводил еще и размер файлов + окно сообщения с именем самого большого файла и его размера. Спасибо
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <array.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 600, 450)
$Edit1 = GUICtrlCreateEdit("", 300, 0, 300, 400)
GUICtrlSetData(-1, "")
$List1 = GUICtrlCreateList("", 0, 0, 300, 400, BitOR($WS_BORDER, $WS_VSCROLL)); Set default style with the exception of $LBS_SORT, which forces alphabetical sorting
$Bfolder = GUICtrlCreateButton("Select Folder To Read File In From", 0, 400, 600, 50)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Bfolder
$SFolder = FileSelectFolder("Select Folder", "")
If $SFolder <> '' Then
If StringRight($SFolder, 1) <> '\' Then $SFolder &= '\'; Add trailing slash if it isn't there
$AFiles = _FileSearch($SFolder & '*.*', 1, 0, 1, 0)
Else
Dim $AFiles[1]
$AFiles[0] = 0
EndIf
If $AFiles[0] <> 0 Then
Dim $ASize[$AFiles[0]][2]
For $a = 1 To $AFiles[0]
$ASize[$a - 1][0] = FileGetSize($AFiles[$a])
$ASize[$a - 1][1] = $AFiles[$a]
Next
_ArraySort($ASize)
;For Edit
$SEditString = ''
For $a = 0 To UBound($ASize) - 1
$SEditString &= $ASize[$a][1]
If $a <> UBound($ASize) - 1 Then $SEditString &= @CRLF
Next
GUICtrlSetData($Edit1, $SEditString)
;For List
$SListString = ''
For $a = 0 To UBound($ASize) - 1
$SListString &= $ASize[$a][1]
If $a <> UBound($ASize) - 1 Then $SListString &= '|'
Next
GUICtrlSetData($list1, ''); Clear any old data
GUICtrlSetData($List1, $SListString)
EndIf
EndSwitch
WEnd
; ---------File Search Functions----------
; _FileSearch( "Path and Mask", <$nOption>, <$cpusaver>, <$dirfilter>, <$filefilter>)
;
;----PARAMETERS-----
;$nOption - <Optional (0 - normal, 1- recursive)>
;$cpusaver - <Optional (0 - normal, 1 - CPU Friendly, but Slower)>
;$dirfilter - <Optional (0 - list directories, 1 - filter out directories)>
;$filefilter- <Optional (0 - list files, 1 - filter out files)>
;
;----RETURN-----
; Returns array. Either Array of files (full path) where...
; Array[0] is number of files.
; Array[0] = 0 if nothing found.
; EXAMPLE USAGE
;--------------------------------------------
;~ #include<array.au3>
;~ $a = _FileSearch("C:\*.*", 1, 0, 0, 0)
;~ _ArrayDisplay($a)
;--------------------------------------------
Func _FileSearch($szMask, $nOption = 0, $cpusaver = 0, $dirfilter = 0, $filefilter = 0)
$szRoot = ""
$hFile = 0
$szBuffer = ""
$szReturn = ""
$szPathList = "*"
Dim $aNULL[1]
If Not StringInStr($szMask, "\") Then
$szRoot = @ScriptDir & "\"
Else
While StringInStr($szMask, "\")
$szRoot = $szRoot & StringLeft($szMask, StringInStr($szMask, "\"))
$szMask = StringTrimLeft($szMask, StringInStr($szMask, "\"))
WEnd
EndIf
If $nOption = 0 Then
_FileSearchUtil($szRoot, $szMask, $szReturn, $cpusaver, $dirfilter, $filefilter)
Else
While 1
$hFile = FileFindFirstFile($szRoot & "*.*")
If $hFile >= 0 Then
$szBuffer = FileFindNextFile($hFile)
While Not @error
If $szBuffer <> "." And $szBuffer <> ".." And _
StringInStr(FileGetAttrib($szRoot & $szBuffer), "D") Then _
$szPathList = $szPathList & $szRoot & $szBuffer & "*"
$szBuffer = FileFindNextFile($hFile)
WEnd
FileClose($hFile)
EndIf
_FileSearchUtil($szRoot, $szMask, $szReturn, $cpusaver, $dirfilter, $filefilter)
If $szPathList == "*" Then ExitLoop
$szPathList = StringTrimLeft($szPathList, 1)
$szRoot = StringLeft($szPathList, StringInStr($szPathList, "*") - 1) & "\"
$szPathList = StringTrimLeft($szPathList, StringInStr($szPathList, "*") - 1)
WEnd
EndIf
If $szReturn = "" Then
$aNULL[0] = 0
Return $aNULL
Else
Return StringSplit(StringTrimRight($szReturn, 1), "*")
EndIf
EndFunc ;==>_FileSearch
Func _FileSearchUtil(ByRef $ROOT, ByRef $MASK, ByRef $RETURN, $cpusaver, $dirfilter, $filefilter)
$hFile = FileFindFirstFile($ROOT & $MASK)
If $hFile >= 0 Then
$szBuffer = FileFindNextFile($hFile)
While Not @error
If $cpusaver = 1 Then Sleep(1) ;OPTIONAL FOR CPU SAKE
If $szBuffer <> "." And $szBuffer <> ".." Then
If StringInStr(FileGetAttrib($ROOT & $szBuffer), "D") Then
If $dirfilter = 0 Then $RETURN = $RETURN & $ROOT & $szBuffer & "*"
Else
If $filefilter = 0 Then $RETURN = $RETURN & $ROOT & $szBuffer & "*"
EndIf
EndIf
$szBuffer = FileFindNextFile($hFile)
WEnd
FileClose($hFile)
EndIf
EndFunc ;==>_FileSearchUtil