Dir
Описание
Dir - команда вывода дерева каталогов. Возвращает дерево в указанный массив, с разбивкой по столбцам. Имя файла можно не указывать. При указании в качестве параметров только имени массива, возвращает текущий каталог.
Переменная 'errorlevel' содержит количество найденных элементов.
Поддерживается поиск файлов по маске.
Синтаксис
Привязка к окну: Нет.
Работа со свернутым окном: Да.
dir (%resultarray [Path [Filemask]])
Где:
%resultarray - массив, в который будет записан результат.
Возвращает по столбцам: 1) Полный корректный адрес с "\", именем файла, расширением. 2) Адрес. Полный адрес слепленный в нормальную строку с "\". 3) Имя файла без расширения. 4) Расширение файла. 5) Размер. 6) Атрибуты. 7) Дата. 8) Время. 9) Уровень вложенности для пункта 10. 10) Путь с разбивкой 1 папка 1 столбец (для вложенных папок и файлов)
Path - необязательный параметр. Путь к директории.
Filemask - необязательный параметр. Расширение для поиска по маске. Регистронезависимо:
*.ini;*.wav - соответствует любым файлам с расширениями 'ini' или 'wav' *.*|*.exe - соответствует любым файлам, кроме файлов с расширением 'EXE' *.mp3;*.wav|?.*;??.* - соответствует любым файлам с расширениями 'mp3' и 'wav', за исключением файлов у которых имя состоит из одного или двух символов.
Примеры
// Пример 1
log clear
log mode compact
set %a [1] 123
set %a [2] 456
// Для примера будут созданы папки и файлы 'txt'
dircreate ("C:\folder987\folder654") // создать на диске 'C:\' папку 'folder987' и вложенную папку 'folder654'
save_array %a C:\folder987\folder654\fail321.txt // сохранить массив в папку 'folder654'
save_array %a C:\folder987\fail456.txt // сохранить массив в папку 'folder987'
wait 500
// Поиск файлов с расширением 'txt' в папке 'folder654'
dir (%result1 C:\folder987\folder654 *.txt*)
log Найдено файлов: errorlevel
// log size(%result1) - так тоже можно узнать количество файлов
if size(%result1) > 0
log %result1 [1 1] - путь к файлу, с именем и расширением
log %result1 [1 2] - путь к файлу
log %result1 [1 3] - имя
log %result1 [1 4] - расширение
log %result1 [1 5] - размер
log %result1 [1 6] - атрибуты
log %result1 [1 7] - дата
log %result1 [1 8] - время
log %result1 [1 9] - уровень вложенности
log %result1 [1 10] - путь с разбивкой (если 9й столбец содержит 0, то будет пустым)
end_if
log
log --------------------
log
// Поиск файлов с расширением 'txt' в папке 'folder987'
dir (%result2 C:\folder987 *.txt*) // поиск файлов с расширением 'txt'
log Найдено файлов: errorlevel
if size(%result2) > 0
for #i 1 size(%result2) // цикл для вывода пути всех найденных файлов в лог
log Путь к файлам: %result2 [#i 1]
end_for
end_if
log
log --------------------
log
// Получить в массив информацию обо всех папках и файлах, находящихся на диске 'C:\' в папке 'folder987'
dir (%result3 C:\folder987)
log Найдено файлов и папок: errorlevel
if size(%result3) > 0
for #i 1 size(%result3) // цикл для вывода пути всех найденных файлов в лог
log Путь к файлам и папкам: %result3 [#i 1]
end_for
end_if
// Можно сохранить результаты поиска:
save_array %result1 C:\result1.txt
save_array %result2 C:\result2.txt
save_array %result3 C:\result3.txt
End_script
Смотрите также
DirCreate
DirRemove
FileCopy
FileDelete
FileRename
История развития
2.30
добавил команду вывода дерева каталогов 'dir (%resultArray [path [filemask]])'. возвращает дерево в указанный массив, с разбивкой по столбцам. имя файла можно не указывать. при указании в качестве параметров только имени массива, возвращает текущий каталог. переменная 'errorlevel' содержит количество найденных элементов
дата_время размер атрибуты папка папка файл
15.10.2008 15:14:04 271696 A util VNC4 vncviewer.exe
пример:
set logging on
set $path \
set $file *pilot*
dir (%dir $path $file)
for #i 1 size(%dir)
set $s
for #ii 4 size(%dir[1])
if %dir [#i #ii] = ""
break
end_if
set $s $s \%dir [#i #ii]
end_for
set logging #i -> $path$s
end_for
end_script
поддерживается поиск файлов по маске, регистронезависимо:
'*.ini;*.wav' - соответствует любым файлам с расширениями 'ini' или 'wav'
'*.*|*.exe' - соответствует любым файлам, кроме файлов с расширением 'EXE'
'*.mp3;*.wav|?.*;??.*' - соответствует любым файлам с расширениями 'mp3' и 'wav', за исключением файлов у которых имя состоит из одного или двух символов.
2.33
Исправил вывод найденного пути в команде 'dir'.
Переделал команду 'dir' по предложению DarkMaster'а.
Возвращает по столбцам: 1) Полный корректный адрес с "\", именем файла, расширением. 2) Адрес. Полный адрес слепленный в нормальную строку с "\". 3) Имя файла без расширения. 4) Расширение файла. 5) Размер. 6) Атрибуты. 7) Дата. 8) Время. 9) Уровень вложенности для пункта 10. 10) Путь с разбивкой 1 папка 1 столбец (для вложенных папок и файлов)
2.38
Подправил команду 'dir', у каталогов больше не обрабатывается расширение.