Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Contributor


Сообщения: 2733
Благодарности: 1698

Профиль | Отправить PM | Цитировать


Set Where=F:\Директория - Задали директорию, где ищем файлы
Set What=.exe .doc .xls .js .tif .ююю - задали через пробел расширения файлов (с точкой впереди) (.ююю - для теста сделал несуществующее расширение)

Set W=%What:.=*.% - для Dir приготовили строку с масками *.exe *.doc *.xls *.js *.tif *.ююю

cd /D "%Where%" -заданную директорию сделал текущей

IF %ERRORLEVEL%==0 ( - Если это удалось, запускаю Dir в текущей директории для всех поддиректорий.
В постановке задачи было
Цитата:
Так проделать для нескольких расширений, а потом выдать обьем очищенного места на ЖД.
Поэтому запускаю Dir для каждого расширения отдельно. При этом ловлю предпоследнюю строку выдачи Dir, где подсчитано кол-во файлов и их объём. Я не видел смысла превращать эту строку в число, очевидно, это просто сделать. Если файлов с указанным расширением не найдено, в выдаче Dir отсутствует слово байт (придумано, конечно, коряво)
Echo %Where%
FOR %%e IN (%What%) DO (
FOR /F "usebackq tokens=*" %%m IN (`dir *%%e /s`) DO Set First=!Second! & Set Second=%%m
Set M=!First:байт=!
If Not "!M!"=="!First!" Echo *%%e !First!
)
Этот кусок в принципе можно выбросить, если статистика по отдельным расширениям не интересна - это в разы ускорит выполнение.
Далее считаю общее число по всем заданным расширениям dir *.exe *.doc *.xls *.js *.tif *.ююю /s

FOR /F "usebackq tokens=*" %%s IN (`dir %W% /s`) DO Set First=!Second! & Set Second=%%s
Set M=!First:байт=!
If Not "!M!"=="!First!" Echo %W% !First!

Единственное, не пойму, что, код нерабочий? - у меня прекрасно работает.
sov44, Вы не указывали объёмы удаляемых файлов, один фильмец прекрасно перекроет 2Гига.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:34, 06-07-2012 | #11