Что нового

Поиск файла по дате и размеру файла

Wild_Duck

Новичок
Сообщения
3
Репутация
0
Добрый день, нужна помощь с написание кода по поиску файла
Есть папка в ней около 250 файлов с разной датой и размером, нужно найти файл зная дату его создания и размер больше 30 КБ
Т.е. как в теории должно работать, пользователь вбивает дату и программа должна найти файл который весит больше 30 КБ за эту дату
Я находил похожее на то как найти файл по дате создания, как получить размер файла, но как это все соединить вообще не пойму. Если сможете то помогите с решением данной задачи.
 
Решение
Вот скрипт с отладкой. Запустите из SciTE по F5 и смотрите вывод в консоль:
Путь к файлу|Дата создания|Размер в байтах
Код:
#include <File.au3>

$Folder = @WindowsDir
$Date = "20201231" ; ГГГГММДД
$Size = 30000 ; 30 КБ

$aFiles = _FileListToArray($Folder, "*", 1, True)
If @error Then Exit MsgBox(0, "Ошибка", "Ошибка поиска файлов")
ConsoleWrite("Найдено файлов " & $aFiles[0] & @CRLF) ; <== отладка

For $i = 1 To $aFiles[0]
  $D = StringLeft(FileGetTime($aFiles[$i], 1, 1), 8)
  $S = FileGetSize($aFiles[$i])
  ConsoleWrite($aFiles[$i] & "|" & $D & "|" & $S & @CRLF) ; <== отладка
  If $D = $Date And $S > $Size Then MsgBox(0, "Найден", $aFiles[$i])
Next

InnI

AutoIT Гуру
Сообщения
4,555
Репутация
1,257
Код:
#include <File.au3>

$Folder = @WindowsDir
$Date = "20201231" ; ГГГГММДД
$Size = 30000 ; 30 КБ

$aFiles = _FileListToArray($Folder, "*", 1, True)
If @error Then Exit MsgBox(0, "Ошибка", "Ошибка поиска файлов")

For $i = 1 To $aFiles[0]
  If StringLeft(FileGetTime($aFiles[$i], 1, 1), 8) = $Date _
  And FileGetSize($aFiles[$i]) > $Size _
  Then MsgBox(0, "Найден", $aFiles[$i])
Next
 
Автор
W

Wild_Duck

Новичок
Сообщения
3
Репутация
0
Код:
#include <File.au3>

$Folder = @WindowsDir
$Date = "20201231" ; ГГГГММДД
$Size = 30000 ; 30 КБ

$aFiles = _FileListToArray($Folder, "*", 1, True)
If @error Then Exit MsgBox(0, "Ошибка", "Ошибка поиска файлов")

For $i = 1 To $aFiles[0]
  If StringLeft(FileGetTime($aFiles[$i], 1, 1), 8) = $Date _
  And FileGetSize($aFiles[$i]) > $Size _
  Then MsgBox(0, "Найден", $aFiles[$i])
Next
у меня почему то ничего не происходит :( никакого сообщения, об ошибки или нахождения файла
Сообщение автоматически объединено:

если это поможет, то название файлов среди которых нужно найти нужный называются так 456482516451.log не нужные весят от 11 КБ до 15 КБ, а тот что нужен имеет вес больше 30 КБ
 
Последнее редактирование:

InnI

AutoIT Гуру
Сообщения
4,555
Репутация
1,257
Вот скрипт с отладкой. Запустите из SciTE по F5 и смотрите вывод в консоль:
Путь к файлу|Дата создания|Размер в байтах
Код:
#include <File.au3>

$Folder = @WindowsDir
$Date = "20201231" ; ГГГГММДД
$Size = 30000 ; 30 КБ

$aFiles = _FileListToArray($Folder, "*", 1, True)
If @error Then Exit MsgBox(0, "Ошибка", "Ошибка поиска файлов")
ConsoleWrite("Найдено файлов " & $aFiles[0] & @CRLF) ; <== отладка

For $i = 1 To $aFiles[0]
  $D = StringLeft(FileGetTime($aFiles[$i], 1, 1), 8)
  $S = FileGetSize($aFiles[$i])
  ConsoleWrite($aFiles[$i] & "|" & $D & "|" & $S & @CRLF) ; <== отладка
  If $D = $Date And $S > $Size Then MsgBox(0, "Найден", $aFiles[$i])
Next
 
Решение
Автор
W

Wild_Duck

Новичок
Сообщения
3
Репутация
0
Вот скрипт с отладкой. Запустите из SciTE по F5 и смотрите вывод в консоль:
Путь к файлу|Дата создания|Размер в байтах
Код:
#include <File.au3>

$Folder = @WindowsDir
$Date = "20201231" ; ГГГГММДД
$Size = 30000 ; 30 КБ

$aFiles = _FileListToArray($Folder, "*", 1, True)
If @error Then Exit MsgBox(0, "Ошибка", "Ошибка поиска файлов")
ConsoleWrite("Найдено файлов " & $aFiles[0] & @CRLF) ; <== отладка

For $i = 1 To $aFiles[0]
  $D = StringLeft(FileGetTime($aFiles[$i], 1, 1), 8)
  $S = FileGetSize($aFiles[$i])
  ConsoleWrite($aFiles[$i] & "|" & $D & "|" & $S & @CRLF) ; <== отладка
  If $D = $Date And $S > $Size Then MsgBox(0, "Найден", $aFiles[$i])
Next
Все работает, больше моя невнимательность, спасибо :smile:
 
Последнее редактирование:
Верх