Вы можете задать любой вопрос по программе Autohotkey в нашей группе Вконтакте. Если решение требует более высокой квалификации- можно обратиться непосредственно ко мне.
Группа Вконтакте | Электронная почта | Симаков Яков ВК |
Возвращает указанные файлы или папки по одному/одной.
FilePattern | Имя файла или папки, либо шаблон, такой как C:\Temp\*.tmp. Если не задан полный путь, FilePattern ищется в папке, указанной в переменной A_WorkingDir. В шаблоне поддерживаются как звёздочка, так и вопросительный знак. Может указываться как длинное/нормальное имя файла, так и короткое имя в формате 8.3. Если указан одиночный файл или папка (не шаблон) и параметр Recurse задан как 1, будет найдено несколько совпадений, если файл с таким именем встречается более чем в одной папке. |
IncludeFolders? | Включать ли в просмотр папки. Одна из следующих цифр (или пустой, чтобы использовалось значение по умолчанию): 0 (по умолчанию): папки не возвращаются (только файлы). 1: возвращаются все файлы и папки, которые отвечают шаблону. 2: возвращаются только папки (не файлы). |
Recurse? | Рекурсия. Одна из следующих цифр (или пустой, чтобы использовалось значение по умолчанию): 0 (по умолчанию): рекурсия в подпапки не производится. 1: рекурсия в подпапки производится и возвращаются все папки и файлы в них, совпадающие с FilePattern. Рекурсия производится во все подпапки, не только в те, чьи имена совпадают с FilePattern. |
Следующие переменные существуют внутри любого файлового цикла. Если один файловый цикл находится внутри другого, файл внутреннего цикла будет иметь преимущество.
A_LoopFileName | Имя текущего файла или папки (без пути). |
A_LoopFileExt | Расширение файла (например, TXT, DOC, или EXE). Точка (.) не включается. |
A_LoopFileFullPath | Полный путь и имя текущего файла/папки. Однако, если FilePattern содержит не полный, а относительный путь, то путь здесь также будет относительным. Вдобавок, все короткие (8.3) имена папок в FilePattern останутся короткими (длинный вариант см. в следующем пункте). |
A_LoopFileLongPath | Отличается от A_LoopFileFullPath тем, что: 1) всегда содержит полный/абсолютный путь файла, даже если FilePattern содержит относительный путь; 2) все короткие (8.3) имена папок в FilePattern конвертируются в длинные; 3) буквы в FilePattern переводятся в верхний либо нижний регистр, чтобы имена приняли тот вид, в котором они хранятся в файловой системе. Это полезно для приведения имён файлов - таких как те, что передаются в скрипт как параметры командной строки - точно к тому виду, в каком они показываются в Проводнике. |
A_LoopFileShortPath | Короткое имя в формате 8.3 для текущего файла/папки. Например, C:\MYDOCU~1\ADDRES~1.txt. Однако, если FilePattern содержит не абсолютный, а относительный путь, то путь здесь тоже будет относительным. Чтобы получить полный путь и имя в формате 8.3 для одиночного файла или папки, задайте его/её имя в FilePattern как в этом примере: Loop, C:\My Documents\Address List.txt
ShortPathName = %A_LoopFileShortPath%
Замечание: эта переменная будет пустой, если файл не имеет короткого имени, что может случиться в системе, где реестр содержит параметр NtfsDisable8dot3NameCreation. Она также будет пустой, если FilePattern содержит относительный путь, а в теле цикла происходит переключение в другую рабочую папку командой SetWorkingDir.
|
A_LoopFileShortName | Короткое имя файла в формате 8.3. Если файл не имеет такого имени (в силу того, что длинное имя короче, чем 8.3 или, возможно, потому, что создание коротких имён отключено в файловой системе NTFS), взамен будет возвращено значение для A_LoopFileName. |
A_LoopFileDir | Полный путь каталога, в котором находится A_LoopFileName. Однако, если FilePattern содержит не абсолютный, а относительный путь, то и здесь путь также будет относительным. Путь к корневому каталогу не будет иметь обратной косой черты на конце. Например: С: |
A_LoopFileTimeModified | Время последнего изменения файла. Формат YYYYMMDDHH24MISS. (Прим. переводчика: см. расшифровку этого формата в описании FileGetTime). |
A_LoopFileTimeCreated | Время создания файла. Формат YYYYMMDDHH24MISS. |
A_LoopFileTimeAccessed | Время последнего доступа к файлу. Формат YYYYMMDDHH24MISS. |
A_LoopFileAttrib | Атрибуты текущего файла. (Прим. переводчика: подробнее см. в описании FileGetAttrib). |
A_LoopFileSize | Размер текущего файла в байтах. Файлы больше 4 Гб также поддерживаются. |
A_LoopFileSizeKB | Размер текущего файла в килобайтах, округлённый до ближайшего снизу целого числа. |
A_LoopFileSizeMB | Размер текущего файла в мегабайтах, округлённый до ближайшего снизу целого числа. |
Файловый цикл полезен для обработки множества файлов и/или папок по очереди.
Возвращаются все совпадающие файлы, включая скрытые. Напротив, средства операционной системы, такие как команда DIR, по умолчанию пропускают скрытые файлы. Чтобы избежать обработки скрытых, системных и/или разрешённых только для чтения файлов, используйте в файловом цикле что-нибудь вроде следующего:
Чтобы получать относительные пути файлов вместо абсолютных во время рекурсивного поиска, перед выполнением цикла сделайте нужную базовую папку рабочей с помощью команды SetWorkingDir и не указывайте путь в команде Loop (например, Loop, *.*, 0, 1). Это заставит A_LoopFileFullPath возвращать пути, относительные к базовой папке.
Работа файлового цикла может нарушиться, если он создаёт или переименовывает файлы или папки внутри своей собственной области поиска. Например, если он переименовывает файлы посредством FileMove или другим способом, это может привести к тому, что каждый такой файл будет найден дважды: один раз под своим старым именем и другой раз под новым. Чтобы обойти это, переименовывайте файлы только после составления их списка. Например:
В файловой системе NTFS файлы, вероятно, всегда возвращаются в алфавитном порядке. В других файловых системах какого-то определённого порядка при этом нет. Для упорядочивания используйте команду Sort, как показано в разделе примеров ниже.
Файлы и папки, чей полный путь длиннее 259 символов, игнорируются, как если бы они не существовали. Такие файлы - редкость, поскольку операционная система, в норме, не позволяет их создавать.
Смотрите в описании команды Loop информацию о блоках кода, командах Break, Continue и переменной A_Index (которая существует в циклах всех типов).