Dir

Материал из UoPilot
Перейти к навигации Перейти к поиску

Описание

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', у каталогов больше не обрабатывается расширение.