Что нового

Поиск фалйа

Сообщения
95
Репутация
-1
Нужно найти только один самый большой файл в папке
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Код:
_FileListToArray()
FileGetSize()
 
Автор
Xabib2302
Сообщения
95
Репутация
-1
И как совместить для получения имени файла?
Код:
$FileList=_FileListToArray(@ScriptDir,'*.bin')
$iFileSize=FileGetSize($FileList)
 
Автор
Xabib2302
Сообщения
95
Репутация
-1
Что то вроде этого?
Код:
#include <File.au3>
#include <Array.au3>

$FileList=_FileListToArray(@ScriptDir)
if IsArray($FileList) then
$FileSize=FileGetSize($FileList[1])
MsgBox(0, 'Размер файла в байтах', $FileSize)
EndIf

Только вопрос как получить имя самого большого файла при том, что количество файлов будет меняться
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
как получить имя самого большого файла
Я не пойму, вы не умеете работать с массивами? Или не знаете алгоритм нахождения максимума?
Код:
#include <File.au3>

$FileList = _FileListToArray(@ScriptDir, "*.bin", $FLTA_FILES)
If @error Then Exit MsgBox(0, "Error", "Ошибка поиска файлов")

$Max = -1
$Idx = -1
For $i = 1 To $FileList[0]
  $FileSize = FileGetSize($FileList[$i])
  If $FileSize > $Max Then
    $Max = $FileSize
    $Idx = $i
  EndIf
Next

MsgBox(0, "", "Размер файла в байтах: " & $Max & @CRLF & _
              "Имя файла: " & $FileList[$Idx])
 
Автор
Xabib2302
Сообщения
95
Репутация
-1
С массивами я не умею работать. Я вообще в autoit новичок. Хотя с базовыми функциями работать могу.
Сообщение автоматически объединено:

Есть одна проблема
Код:
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_UseUpx=y
#include <File.au3>
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
;-----------------------ESET
FileMove(@ScriptDir & '\eav_nt32*.exe', @ScriptDir & '\ESET_x86.exe', 9)
FileMove(@ScriptDir & '\eis_nt32*.exe', @ScriptDir & '\ESET_x86.exe', 9)
FileMove(@ScriptDir & '\essp_nt32*.exe', @ScriptDir & '\ESET_x86.exe', 9)
If FileExists(@ScriptDir & '\ESET_x86.exe') Then
$ProductVersion = FileGetVersion(@ScriptDir & '\ESET_x86.exe','ProductVersion')
IniWrite(@ScriptDir & '\List.ini','Install','ESET','ESET ' & $ProductVersion)
ShellExecuteWait(@ScriptDir & '\bin\ResourcesExtract.exe', '/Source "' & @ScriptDir & '\ESET_x86.exe" /DestFolder "' & @ScriptDir & '\ESET_x86_Temp" /ExtractBinary 1 /OpenDestFolder 0')
$FileList = _FileListToArray(@ScriptDir & '\ESET_x86_Temp', '*.bin', $FLTA_FILES)
$Max = -1
$Idx = -1
For $i = 1 To $FileList[0]
  $FileSize = FileGetSize($FileList[$i])
  If $FileSize > $Max Then
    $Max = $FileSize
    $Idx = $i
  EndIf
next
FileMove(@ScriptDir & '\ESET_x86_Temp\' & $FileList[$Idx], @ScriptDir & '\ESET_x86_Temp\ESET.msi',9)
$ESETVer = FileGetVersion(@ScriptDir & '\ESET_x86.exe')
ConsoleWrite($ESETVer & @CRLF) ; ESET v1.0.0.0
$ESETVer = StringLeft($ESETVer, StringInStr($ESETVer, ".", 0, -3) - 1)
ConsoleWrite($ESETVer & @CRLF) ; ESET v1
RunWait(@SystemDir & '\msiexec.exe /a "' & @ScriptDir & '\ESET_x86_Temp\ESET.msi" TARGETDIR="' & @ScriptDir & '\ESET_v' & $ESETVer & '\32_rus" /qb')
DirRemove(@ScriptDir & '\ESET_x86_Temp', 1)
FileDelete(@ScriptDir & '\ESET_x86.exe')
EndIf

В таких условиях работать не хочет
 
Последнее редактирование:

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
В данном случае массив $FileList содержит только имена файлов. Следовательно, в функцию FileGetSize() нужно добавить путь к файлу.
 
Верх