Удаление всех файлов и папок | ||
|
Мне частенько требуется удалять все файлы из папок, содержащих вложения. Спросите зачем? Надо. Работа у меня такая. Сижу и целыми днями удаляю файлы. Так вот, к моему великому сожалению, сделать это статическим методом ^file:delete[] никак не получается (надеюсь в будущем PAF включит эту возможность). Пришлось написать свой статический метод по удалению файлов.
Работает он просто, вызываете метод с параметрами и он удаляет файлы и папки по заданному пути. Если задан параметр (достаточно чтобы он был не пустой), то удаление будет производится только в указанной папке, не трогая вложенных папок. Если не задан, то удалятся все вложенные файлы и папки.
Параметр шаблон задает маску (регулярное выражение) для удаления выбранного типа файлов (например: \.html). Да, чуть не забыл, если в папках после удаления отсутствуют файлы, то и папки тоже удаляются (если позволяет сервер).
Вызов статического метода так:
^delete_all[папка;шаблон;параметр]
Сам метод:
# $Id: files.p,v 1.0.1.0 2004/02/01 Eugene Spearance Exp $ ######################################## # Удаление всех файлов и папок в текущем каталоге # # 0 - удаление завершено успешно # 1 - каталог не найден по указанному пути # 2 - файл не найден по указанному пути # 3 - каталог не содержит файлов или папок # ##### @delete_all[path;mask;only][list] ^rem{ *** Проверяем существует ли папка *** } ^if(-d $path){ ^rem{ *** Получаем список файлов и папок *** } $list[^file:list[$path;$mask]] ^if($list){ ^list.menu{ ^if(-f "${path}$list.name"){ ^rem{ *** Удаляем все файлы из папки, папки не удаляются *** } ^file:delete[${path}$list.name] }{ $result(2) } } }{ $result(3) } ^rem{ *** Если папка не пустая и нет признака only проверяем вложенные папки *** } ^if(!def $only && $result != 3){ ^rem{ *** Проверяем что осталось в папке *** } $list[^file:list[$path]] ^if($list){ ^rem{ *** Рекурсивно вызываем оператор удаления *** } ^list.menu{^delete_all[${path}${list.name}/;$mask]} } } $result(0) }{ $result(1) } ### End @delete_all
Powered by Parser 3 | Eugene Spearance |