|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Подсчет обьема файлов определенного расширения и их удаление |
|
|
CMD/BAT - [решено] Подсчет обьема файлов определенного расширения и их удаление
|
Новый участник Сообщения: 8 |
Профиль | Отправить PM | Цитировать Здравствуйте! Пишу программу для чистки диска, но не могу решить одну проблему - мне необходимо найти файлы с расширением, например: *.old, удалить их, но при этом посчитать суммарный обьем удаленных файлов. Так проделать для нескольких расширений, а потом выдать обьем очищенного места на ЖД.
С удалением файлов я разобрался, а вот как посчитать общий обьем, не знаю. Помогите! Буду благодарен! |
|
Отправлено: 07:22, 05-07-2012 |
Ветеран Сообщения: 2726
|
Профиль | Отправить PM | Цитировать @Echo Off cls Set Where=F:\Директория 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 ( 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! ) 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! ) If "%Second%"=="Папка указана неверно" Echo %Second% %Where% Pause |
------- Последний раз редактировалось megaloman, 06-07-2012 в 13:05. Отправлено: 13:31, 05-07-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать Спасибо, конечно же за ответ. Но почему-то у меня данный скрипт не работает: просто не находит файлы. Пробовал указывать директорию, в которой, например, есть log-файлы, причем в переменную ставил .log
Просто выдает "Для продолжения нажмите на любую клавишу". |
------- Отправлено: 09:59, 06-07-2012 | #3 |
Ветеран Сообщения: 2196
|
Профиль | Отправить PM | Цитировать ilyadud, попробуйте так
@Echo Off SetLocal enabledelayedexpansion set iSumL=0 set Rash=*.log;*.old;*.bak;*.temp;*.tmp;*.---;*._mp;*.syd; For /F "Delims=" %%I In ('Dir c:\%Rash% /B/S/A:-D-H 2^>nul') Do ( 2>&1 del /q "%%I" | 1>nul findstr "." if errorlevel 1 (set /a iSumL +=%%~zI) ) Echo !iSumL! pause @echo off SetLocal enabledelayedexpansion set iSumG=0 set DRG="%USERPROFILE%\Local Settings\Application Data\Google\Chrome\User Data\Default" set Rash="Current Session";"History";"History Index *-*";"Last Session";"Visited Links";"Archived History"; For /F "Delims=" %%I In ('Dir %DRG%\%Rash% /S/B/A:-D 2^>nul') Do ( set /a iSumG +=%%~zI del /q "%%I" 2>nul ) Set /A Cnt +=!iSumG! echo %Cnt% pause |
Последний раз редактировалось sov44, 06-07-2012 в 10:42. Отправлено: 10:31, 06-07-2012 | #4 |
Старожил Сообщения: 415
|
Профиль | Отправить PM | Цитировать sov44, у вас путь в dir раскрывается примерно таким образом:
Dir "%USERPROFILE%\Local Settings\Application Data\Google\Chrome\User Data\Default"\"Current Session";"History";"History Index *-*";"Last Session";"Visited Links";"Archived History"; /S/B/A:-D 2>nul @Echo Off SetLocal EnableDelayedExpansion set DRG="%USERPROFILE%\Local Settings\Application Data\Google\Chrome\User Data\Default" set Rash="Current Session";"History";"History Index *-*";"Last Session";"Visited Links";"Archived History"; :Jmp For /F "tokens=1,* delims=;" %%A In ("!Rash!") Do ( If Not "%%A"=="" ( For /F "Delims=" %%I In ('Dir %DRG%\%%A /S/B/A:-D 2^>nul') Do ( Echo %%I ) Set Rash=%%B&GoTo Jmp ) ) Pause>Nul |
|
Отправлено: 12:43, 06-07-2012 | #5 |
Ветеран Сообщения: 2726
|
Профиль | Отправить PM | Цитировать sov44, ИМХО, Ваш способ суммирования в бат-файле опасен - при больших значениях (точно сейчас не упомню каких) батник суммировать не будет, именно поэтому я пытаюсь пользоваться результатами команды Dir (кстати, ИМХО, это быстрее получится, хотя и в ущерб универсальности для рус-англ систем)
Цитата:
ilyadud, я подправил последнюю строку скрипта для информативности. 1. Возможно Вы неверно задали папку. Попробуйте, например, C:\ 2. Возможно, батник набран не в 866 кодировке - проверьте, это существенно, так как анализируется наличие слова байт 3. Возможно, у Вас вовсе не русифицированное сообщение команды dir - сделайте, например, Dir c:\ >C:\aaa Содержимое файла ааа хотелось бы увидеть. Придётся заменить слово байт на англ аналог. У меня сделан только подсчет размеров, удаление надо произвести после этого. |
|
------- Последний раз редактировалось megaloman, 06-07-2012 в 13:24. Отправлено: 13:04, 06-07-2012 | #6 |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать Всем спасибо!
|
------- Отправлено: 13:19, 06-07-2012 | #7 |
Ветеран Сообщения: 2196
|
Профиль | Отправить PM | Цитировать megaloman, к сожалению не понял Вашего кода и не смог применить к своему коду (первый код поста 4). Если не затруднит, добавьте пояснения в свой код. Интересно попробовать и сравнить быстродействие кодов
|
Отправлено: 18:08, 06-07-2012 | #8 |
Старожил Сообщения: 415
|
Профиль | Отправить PM | Цитировать sov44, возможно, коллега megaloman имеет в виду вот это:
При определённых, слишком больших значениях - происходит переполнение переменной и результат уходит в минус, либо выдается сообщение о ошибке. |
Отправлено: 18:24, 06-07-2012 | #9 |
Ветеран Сообщения: 2196
|
Профиль | Отправить PM | Цитировать Цитата Anonymоus:
|
|
Отправлено: 18:37, 06-07-2012 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Прочие - [решено] Удаление файлов заданного расширения | Папуас | Программное обеспечение 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 |
|