|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] получить размер каталога с подкаталогами |
|
|
CMD/BAT - [решено] получить размер каталога с подкаталогами
|
|
Старожил Сообщения: 362 |
подскажите, возможно ли это и как?
|
|
|
------- Отправлено: 15:15, 27-11-2009 |
|
Ветеран Сообщения: 2204
|
Профиль | Отправить PM | Цитировать Не знаю, как посчитать сумму удаляемых файлов в корзинах. С остальным вроде бы разобрался, но как то коряво получилось.
|
|
Последний раз редактировалось sov44, 05-05-2011 в 07:20. Отправлено: 13:57, 01-04-2011 | #11 |
|
Ветеран Сообщения: 2204
|
Профиль | Отправить PM | Цитировать помогите с циклом
@Echo Off
SetLocal enabledelayedexpansion
rem очистка корзины
FOR %%d IN (Z Y X W U V T S R Q P O N M L K J I H G F E D C) DO IF EXIST %%d:\recycler SET DirProg=%%d:\recycler
For /F "skip=4 tokens=1-3" %%a IN ('Dir "%DirProg%" /-C /S ') Do (
If !flag!==1 Set dirsize=%%c
If "%%b"=="файлов:" (Set flag=1) Else (Set flag=0)
)
Set kb=1024 Set /a mb=kb*kb, dirsizeMB=dirsize/mb, ostMB=dirsize%%mb*100/mb
echo Очистка корзины - OK %dirsizeMB%,%ostMB% Мб
pause
|
|
Отправлено: 21:20, 01-04-2011 | #12 |
|
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать @Echo Off
SetLocal enabledelayedexpansion
rem очистка корзины
FOR %%d IN (Z Y X W U V T S R Q P O N M L K J I H G F E D C) DO (
IF EXIST %%d:\RECYCLER (
SET DirProg=%%d:\RECYCLER
For /F "skip=4 tokens=1-3" %%a IN ('Dir "!DirProg!" /-C /S /A:-D') Do (
If !flag!==1 Set dirsize=%%c
If "%%b"=="файлов:" (Set flag=1) Else (Set flag=0)
)
Set /A Allsize +=dirsize
)
)
Set kb=1024
Set /a mb=kb*kb, AllsizeMB=Allsize/mb, ostMB=Allsize%%mb*100/mb
echo Очистка корзины - OK %AllsizeMB%,%ostMB% Мб
Pause
|
|
Отправлено: 21:50, 01-04-2011 | #13 |
|
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать Цитата sov44:
|
|
|
Отправлено: 22:54, 01-04-2011 | #14 |
|
Ветеран Сообщения: 2204
|
Профиль | Отправить PM | Цитировать С условием поиска не получается. Не могу прикрутить if exist. Опять сложный для меня цикл.
|
|
Отправлено: 23:21, 01-04-2011 | #15 |
|
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать sov44, не удаляйте посты! Мой пост 14 выглядит как-то глупо, не находите?
Цитата sov44:
|
|
|
Отправлено: 23:37, 01-04-2011 | #16 |
|
Ветеран Сообщения: 2204
|
Профиль | Отправить PM | Цитировать Цитата gora:
Цитата gora:
@Echo Off
SetLocal enabledelayedexpansion
set /A Cnt =0
for %%I in ("%AppData%\Opera\Opera\typed_history.xml") do set dirsize2=%%~zI
for %%I in ("%AppData%\Opera\Opera\global_history.dat") do set dirsize3=%%~zI
Set /A Cnt +=%dirsize2%
Set /A Cnt +=%dirsize3%
echo %Cnt%
if exist "%AppData%\Opera\Opera\typed_history.xml" del "%AppData%\Opera\Opera\typed_history.xml"
if exist "%AppData%\Opera\Opera\global_history.dat" del "%AppData%\Opera\Opera\global_history.dat"
echo Очистка истории в Opera - OK
pause
|
||
|
Последний раз редактировалось sov44, 02-04-2011 в 00:11. Отправлено: 23:47, 01-04-2011 | #17 |
|
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата sov44:
@echo off setlocal enableextensions enabledelayedexpansion set /a iSum = 0 call :CalcAndDel "%AppData%\Opera\Opera\typed_history.xml" call :CalcAndDel "%AppData%\Opera\Opera\global_history.dat" echo Total size: %iSum% endlocal exit /b 0 rem ========================================================================== rem ========================================================================== :CalcAndDel set sFile=%~1 if defined sFile ( if exist "%sFile%" ( set /a iSum += %~z1 echo del /f /q "%sFile%" ) else ( echo Not found file [%sFile%] ) ) else ( echo Error call procedure: need argument ^<file^> ) exit /b 0 rem ========================================================================== |
|
|
Отправлено: 00:55, 02-04-2011 | #18 |
|
Ветеран Сообщения: 2204
|
Профиль | Отправить PM | Цитировать Сейчас делаю проверку по условию наличия программы. Если есть программа, то считается размер кеша и чистит его, если нет, то ничего не считает и выводит сообщение с прочерками. Столкнулся с непонятным:
При установленной Опере если без кавычек, кеш считается нормально. Если Оперу удалить, то появляются ошибки. Если поставить кавычки, то как и нужно при удалённой Опере появляется сообщение с прочерками, однако при установленной Опере опять ошибка. @Echo Off
SetLocal enabledelayedexpansion
Set Cnt=10
rem очистка временных файлов Opera
if exist %programfiles%\Opera (
Set DirProg=%USERPROFILE%\Local Settings\Application Data\Opera\opera\cache
For /F "skip=4 tokens=1-3" %%a IN ('Dir "%DirProg%" /-C /S ') Do (
If !flag!==1 Set dirsize1=%%c
If "%%b"=="файлов:" (Set flag=1) Else (Set flag=0)
)
Set /A Cnt +=%dirsize1%
PUSHD "%DirProg%"
2>Nul RD /S/Q "%DirProg%"
POPD
echo Очистка временных файлов Opera - OK %dirsize1% %Cnt%
) Else ( echo Очистка временных файлов Opera - -- )
Set kb=1024 Set /a mb=kb*kb, dirsizeMB=Cnt/mb, ostMB=Cnt%%mb*100/mb
echo.
echo.
echo Очистка выполнена, всего удалено %dirsizeMB%,%ostMB% Мб
pause
ping 127.0.0.1 -n 8 > nul
|
|
Отправлено: 12:14, 03-04-2011 | #19 |
|
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать sov44
Кавычки для путей с пробелами здесь обязательны. Переменные присваиваемые/изменяемые в блоке (скобки при проверке условия) далее в блоке нужно заключать в восклицательные знаки, а не в проценты, иначе их значение будет таким же как до входа в блок. Оперы у меня нет, проверял на кеше IE в win7 : @Echo Off
SetLocal enabledelayedexpansion
Set Cnt=10
rem очистка временных файлов Opera
Set DirProg=c:\Users\gora\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5
if exist "%DirProg%" (
For /F "skip=4 tokens=1-3" %%a IN ('Dir "%DirProg%" /-C /S ') Do (
If !flag!==1 Set dirsize1=%%c
If "%%b"=="файлов:" (Set flag=1) Else (Set flag=0)
)
Set /A Cnt +=dirsize1
PUSHD "%DirProg%"
rem 2>Nul RD /S/Q "%DirProg%"
POPD
echo Очистка временных файлов Opera - OK !dirsize1! !Cnt!
) Else (echo Очистка временных файлов Opera - -- )
Set kb=1024
Set /a mb=kb*kb, dirsizeMB=Cnt/mb, ostMB=Cnt%%mb*100/mb
echo.
echo.
echo Очистка выполнена, всего удалено %dirsizeMB%,%ostMB% Мб
pause
|
|
Последний раз редактировалось gora, 03-04-2011 в 13:19. Отправлено: 13:08, 03-04-2011 | #20 |
|
|
Участник сейчас на форуме |
|
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
| Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
| CMD/BAT - [решено] Копирование самого позднего по дате создания каталога. | SANIOK_AV | Скриптовые языки администрирования Windows | 2 | 04-12-2009 17:29 | |
| Разное - [решено] удаление каталога с подкаталогами | lud | Microsoft Windows 2000/XP | 2 | 02-07-2009 15:57 | |
| CMD/BAT - [решено] Поиск каталога и копирование всего его содержимого | desk | Скриптовые языки администрирования Windows | 4 | 01-07-2009 14:28 | |
| Интерфейс - [решено] цвет шрифта каталога | tref2me | Microsoft Windows 2000/XP | 4 | 07-06-2008 07:43 | |
| [решено] Идентификация каталога c помощью shell | programmist72 | Общий по Linux | 14 | 13-11-2006 10:06 | |
|