|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Подсчет обьема файлов определенного расширения и их удаление |
|
CMD/BAT - [решено] Подсчет обьема файлов определенного расширения и их удаление
|
Новый участник Сообщения: 8 |
Профиль | Отправить PM | Цитировать Здравствуйте! Пишу программу для чистки диска, но не могу решить одну проблему - мне необходимо найти файлы с расширением, например: *.old, удалить их, но при этом посчитать суммарный обьем удаленных файлов. Так проделать для нескольких расширений, а потом выдать обьем очищенного места на ЖД.
С удалением файлов я разобрался, а вот как посчитать общий обьем, не знаю. Помогите! Буду благодарен! |
|
Отправлено: 07:22, 05-07-2012 |
Ветеран Сообщения: 2726
|
Профиль | Отправить 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 в текущей директории для всех поддиректорий. В постановке задачи было Цитата:
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 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2726
|
Профиль | Отправить PM | Цитировать sov44, По мотивам Вашего скрипта написал свой, начал сомневаться, что быстрее работает
Errorlevel после CD забыл, но это не принципиально. Удаления не делал. У Вас конечно лучше совмещение удаления и подсчета места, у меня так сделать нельзя, но я заморачивался на том, что так суммировать размер файлов нежелательно (про объёмы файлов в постановке ничего не было)
|
------- Последний раз редактировалось megaloman, 06-07-2012 в 22:31. Отправлено: 22:22, 06-07-2012 | #12 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата sov44:
|
|
Отправлено: 02:46, 07-07-2012 | #13 |
Ветеран Сообщения: 2726
|
Профиль | Отправить PM | Цитировать Переписал свой батник аккуратнее, чтобы не быть привязанным к языку выдачи команды Dir (слово байт больше не ловлю, анализирую кол-во строк в выдаче Dir)
Вообще-то команда Dir возвращает Errorlevel=1 если файлы не найдены. Мне не удалось его поймать, когда Dir помещена в For. Может, кто-то подскажет? Было бы существенно лучше. @Echo Off cls Set Where=D:\Директория поиска Set What=.exe .doc .xls .js .tif .ююю Set W=%What:.=*.% SetLocal EnableExtensions SetLocal EnableDelayedExpansion cd /D "%Where%" Set First=Папка указана неверно Set Second=%First% IF %ERRORLEVEL%==0 ( Echo %Where% FOR %%e IN (%What%) DO ( Set N=0 FOR /F "usebackq tokens=*" %%m IN (`dir *%%e /s 2^>nul`) DO Set First=!Second! & Set Second=%%m & Set /A N=!N!+1 If !N! GTR 4 (Echo *%%e !First!) Else (Echo *%%e Файлы не найдены) ) Set N=0 FOR /F "usebackq tokens=*" %%s IN (`dir %W% /s 2^>nul`) DO Set First=!Second! & Set Second=%%s & Set /A N=!N!+1 If !N! GTR 4 (Echo %W% !First!) Else (Echo %W% Файлы не найдены) ) Else ( Echo %Second% %Where% ) Pause |
------- Последний раз редактировалось megaloman, 07-07-2012 в 15:07. Отправлено: 15:01, 07-07-2012 | #14 |
Старожил Сообщения: 415
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
|
|
Отправлено: 15:15, 07-07-2012 | #15 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Прочие - [решено] Удаление файлов заданного расширения | Папуас | Программное обеспечение Windows | 11 | 25-02-2019 15:04 | |
VBS/WSH/JS - [решено] Удаление файлов меньше определенного размера | XXXp | Скриптовые языки администрирования Windows | 19 | 03-05-2012 15:12 | |
CMD/BAT - [решено] Удаление каталогов не содержащих файлы определенного типа | m3nthal | Скриптовые языки администрирования Windows | 2 | 15-01-2012 18:26 | |
Восстановление удаленных файлов определенного расширения | PhantomLo | Хочу все знать | 1 | 22-11-2010 21:38 | |
[решено] Удаление всех файлов определенного формата | Grub | Хочу все знать | 4 | 24-03-2006 12:27 |
|