1 (изменено: alexii, 2011-09-12 15:17:56)

Тема: CMD/BAT: Удаление выбранных папок рекурсивно

Добрый день!

Нашел два скрипта:

- один ищет папки старше определенного времени;

FORFILES /M * /D -30 /C "cmd /c if @isdir==TRUE echo @file"

- второй удаляет выбранную папку рекурсивно (rdir)

@echo off 
setlocal 
set rdir=test
set fpath=%~dps0 
call :func %fpath:~0,-1%
goto end 

:func 
for /f "delims=" %%i in ('dir %1 /a:d /b') do IF /I %%i==%rdir% ( rmdir /s /q %1\%%i && echo deleted %1\%%i ) ELSE ( call :func %1\%%i ) 
exit /b 
:end

Подскажите правильный формат вызова функции :func из первого скрипта, чтобы можно было передавать значения найденных папок в цикле FORFILES?

С уважением, Евгений.

2

Re: CMD/BAT: Удаление выбранных папок рекурсивно

Читаем на будущее Правила форума и BBCode. Я исправил Ваш пост.

3

Re: CMD/BAT: Удаление выбранных папок рекурсивно

Спасибо, обязательно почитаю!

4

Re: CMD/BAT: Удаление выбранных папок рекурсивно

esomkin, руководствуясь §4.10, спрошу: какова конечная цель сего действа? Что Вы хотите получить в общем и целом в результате этих действий?

5

Re: CMD/BAT: Удаление выбранных папок рекурсивно

Конечной целью является перебор и удаление папок в корне с временем жизни более 30 дней например. При этом вся внутренняя структура (поддиректории, файлы) выбранных папок также должна быть удалена

6

Re: CMD/BAT: Удаление выбранных папок рекурсивно

esomkin, у меня «forfiles.exe» обрабатывает папки, не глядя на дату их создания. Пропускает при обработке папки, имеющие точку в имени. А у Вас?

7

Re: CMD/BAT: Удаление выбранных папок рекурсивно

Насчет даты создания я не проверял, знаю только что по документации должен учитывать дату создания, папки перебирает, пропускает ли папки с точками в имени тоже не пробовал (для моей ситуации это не столь важно).

Вообще насколько я понял в сети есть несколько модификаций forfiles.exe, в каждом из них что-то может не работать (у меня одна из модификаций не видела папки вообще), поэтому нужно скачивать все и тестировать.