Сайт AZJIO
Главная | Регистрация | Вход Приветствую Вас Гость | RSS
Меню сайта
Категории раздела
Скрипты для LiveCD [0]
Скрипты для WindowsXP [8]
Примеры скриптов [15]
Функции [5]
Поиск
Главная » Статьи » Скрипты AutoIt3 » Функции

FileOperations
FileOperations - функция поиска файлов и папок.

альтернативные варианты можно посмотреть здесь

v1.8.3 от 2014.03.18

_FO_FileSearch - функция поиска файлов
_FO_FolderSearch - функция поиска папок
_FO_CorrectMask - функция корректирующая маску
_FO_SearchEmptyFolders - функция поиска пустых папок
_FO_FileDirReName - функция переименования файла
_FO_GetCopyName - функция вычисления нового имени копии файла, несуществующего
_FO_FileBackup - функция создаёт резервную копию файла
_FO_PathSplit - функция делит путь на 3 части в массив
_FO_IsDir - функция проверяет, является ли объект каталогом или файлом.
_FO_IsEmptyFolder - проверяет, является ли папка пуста
_FO_ShortFileSize - Преобразует байты в число, до 3 значащих цифр с приставкой

Проверяет валидность пути, маски. Содержит основные опции: маска, исключения (инвертирование маски), вложенность. Второстепенные параметры функции: формат возвращаемых данных (массив или список), полные, относительные пути или только имена файлов. Любая ошибка сопровождается кодом ошибки и возвратом пустой строки, и наоборот отсутствие ошибки возвращает валидные данные. В комплекте пример и Gui для теста. Отличие Ru от En только в русских комментариях к функции. Максимальная вложенность $Depth = 125 проверена экспериментальным путём, скриптом создал вложенные папки в качестве имени использовал один символ, их оказалось около 123 для запаса использую 125 (путь не превышает 256 символов, отсюда ограничение). В комплекте "Corrects Mask (viewing).au3" для просмотра работы функции корреции маски. Коррекция предназначена для исправления ошибок ввода от пользователя, тем самым упрощая регулярное выражение, скорость работы которого зависит от содержания.

Правильность маски и поведение поиска.
1. Удаляются повтор элементов маски. Например *.avi|*.mpg|*.avi оставит *.avi|*.mpg (влияет только на скорость регулярного выражения)
2. Маска такого вида *|*.avi обработает как * - все файлы, по наибольшему захвату
3. Пустая строка маски тоже что и * - поиск всех файлов
4. Повотры пробелов и точек в конце каждого элемента маски удаляются, то есть *.avi .|*.mpg |*.vob. то же что *.avi|*.mpg|*.vob
5. Символы * - любое множество или отсутствие символов, ? - любой одиночный символ. При чём поиск не аналогичен поиску в эксплорере, где изначально маcка задана так: *mask*, то есть любое имя содержащее mask

Обновления

2014.03.18
Обновлена _FO_IsEmptyFolder

2013.09.04
Улучшение регулярных выражений, оптимизации

2013.08.02
Добавлено _FO_IsEmptyFolder
Удалена проблема с AU3Check

2013.06.15
В функцию поиска файлов добавлены два параметра для исключения каталога из поиска
Улучшен параметр чуствительности к регистру, не требует указывать диапазон

2013.04.28
Поиск пустых папок теперь выдаёт ошибку при указании файла вместо папки

2013.04.27
Исправлено, если путь пустая строка, это не вызывало ошибки

2012.11.20
Добавлена функция _FO_IsDir, поправка в _FO_FileDirReName

2012.08.08
Улучшен параметр учёта регистра
Текст локализации _FO_GetCopyName вынесен в опциональный передаваемый параметр

2012.06.09
Добавлена функция __FO_UserLocale, чтобы не учитывать регистр букв для локального языка.

2012.05.14
Добавлены две функции _FO_FileDirReName и _FO_GetCopyName

2012.02.16
Для избавления от возможных конфликтов аналогичных одноимённых функций других скриптёров AutoIt3, к функции добавлен префикс _FO
UDF названа FileOperations.au3
Добавлена функция _FO_SearchEmptyFolders - поиск пустых папок

2012.02.15
Убрал лишнюю объявленную переменную $i найденную с помощью Au3Check (не критично)
Для избавления проблем обфускации функция __MaskUnique добавлена в исключение директивами #Obfuscator_Off и #Obfuscator_On
Добавлены префиксы типов переменных

2012.02.14
Убрал лишнюю объявленную переменную $i найденную с помощью Au3Check (не критично)
Для избавления проблем обфускации функция __MaskUnique добавлена в исключение директивами #Obfuscator_Off и #Obfuscator_On

2012.01.10
Коррекция маски выведена в отдельную функцию _FO_CorrectMask
Добавлена проверка уникальности элементов маски

2011.11.27
Всвязи с тем что некоторые программы (в отличии от эксплорера) позволяют переименование файла с добавлением пробела или точки в начало имени, то функция не корректирует маску по этому критерию, то есть корректирует только в отношении окончания файла.
Исправлены некритические ошибки

2011.11.9
Символ разделителя ";" заменён на "|", по причине, что ";" может присутствовать в именах файлов, а значит в маске, что не должно препятствовать поиску. В случае конфликта с разделителем в скрипте можно использовать Opt("GUIDataSeparatorChar", Chr(1)) или использовать свой разделитель, а при передаче опций в функцию сделать замену разделителя в маске, например _FO_FileSearch($Path, StringReplace($Mask, ';', '|'))
Изменён порядок проверки валидности маски для наилучшего детектирования и/или исправления ошибок маски

Ресурсы, на которых можно найти последние версии функции

autoitscript.com

pastebin.com
pastebin.com
pastebin.com


Категория: Функции | Добавил: AZJIO (09.11.2011)
Просмотров: 1675 | Комментарии: 6 | Рейтинг: 5.0/1
Всего комментариев: 6
6  
'*.*', False
тут маска с расширением, а при инвертировании без расширения.

5  
AZJIO подскажи пожалуйста какую маску надо ввести, чтобы найти все файлы без расширения. _FO_FileSearch

4  
Исправил, использовал _FO_IsDir вместо FileExists

3  
при такой конструкции
$1 = _FO_SearchEmptyFolders(@DesktopDir&'\файл.mp3',1,0)
MsgBox(0,'',@error)
MsgBox(0,'',$1)
должна вывалится ошибка, но этого не происходит. функция упорно ищет в файле пустые папки

2  
На 3.3.8.0 работает

1  
на 3.3.8.0 не работает((

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Вход
Друзья сайта
  • WinPE - Ru.Board
  • Rutracker.Org
  • LiveCD - Ru.Board
  • AutoIT3 - Ru.Board
  • autoit-script.ru
  • autoitscript.com
  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0
    WebMoney

    Мой кошелёк

    wmr: R939163939152

    Яндекс: 410011460667731


    AZJIO © 2017