|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Вычисление общего размера файлов в каталоге |
|
Любой язык - [решено] Вычисление общего размера файлов в каталоге
|
Пользователь Сообщения: 55 |
Есть большой-большой каталог с большим кол-вом подкаталогов, в некоторых из них есть подпапка "arch". Нужно вычислить сумму размера всех файлов в каталоге "arch" и его подкаталогах.
Использую след. скрипт: setlocal @for /f "tokens=*" %%i in (' dir /b /s /ad "Z:\Dir1\Dir2\arch" ') do ( pushd "%%i" || goto:eof for /f "tokens=*" %%k in (' dir /b /s /a-d "%%i" ') do ( for /F "Delims=" %%j In (C:\tmpsz.txt) Do ( Set /a tmpsz=%%~j+%%~zk @echo %tmpsz%>C:\tmpsz.txt)) ) Загвоздка в том, что "эха" не выводит запрашиваемую переменную... вернее на момент попытки вывода запрошенной переменной она будто бы не записалась. Пробовал упрощенную конструкцию вида : В таком случае переменная всегда берется заданная в самом начале и в последствии не изменяется Подумал, что это как-то связано с глубиной циклов - добавил в начало батника "SetLocal EnableDelayedExpansion" и пытался вывести "эхой" переменную через "!" знаки, вмест "%", но батник почти сразу "падал" после запуска. Так же пробовал "echo" выносить за скобки самого нижнего цикла на 1 и 2 уровня выше. В чем я тут накосячил? |
|
Отправлено: 16:49, 18-02-2015 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата DOCznet:
|
|
Отправлено: 17:20, 18-02-2015 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 55
|
Профиль | Отправить PM | Цитировать Iska,
Кажется так это было... т.е. более ничего не менял. |
Отправлено: 17:30, 18-02-2015 | #3 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Цитата:
@Echo Off Set "Where=G:\Games\" Set "Out=%~dp0%~nx0.log" Set "Arc=arch" Del "%Out%" 2>Nul SetLocal EnableExtensions EnableDelayedExpansion For /F "Tokens=*" %%D In ('Dir "%Where%" /B /S /A:D 2^>nul') Do ( If /I "%%~nxD"=="%Arc%" Call :Size "%%D" ) GoTo :Eof :Size Set /A "Sum=0" Set /A "SS=0" FOR /F "tokens=1,2,3 usebackq" %%x IN (`Dir %1 /S /A 2^>nul`) DO ( Set "Sum= !SS!" Set "SS=%%z" ) Echo !Sum:~-19! %1 >>"%Out%" @Echo Off Set "Where=G:\Games\" Set "Out=%~dp0%~nx0.log" Set "Arc=arch" Del "%Out%" 2>Nul SetLocal EnableExtensions EnableDelayedExpansion For /F "Tokens=*" %%D In ('Dir "%Where%" /B /S /A:D 2^>nul') Do ( If /I "%%~nxD"=="%Arc%" ( Call :Size "%%D" For /F "Tokens=*" %%A In ('Dir "%%D" /B /S /A:D 2^>nul') Do Call :Size "%%A" ) ) GoTo :Eof :Size Set /A "Sum=0" Set /A "SS=0" FOR /F "tokens=1,2,3 usebackq" %%x IN (`Dir %1 /A 2^>nul`) DO ( Set "Sum= !SS!" Set "SS=%%z" ) Echo !Sum:~-19! %1 >>"%Out%" |
|
------- Последний раз редактировалось megaloman, 20-02-2015 в 10:30. Причина: Оптимизация Отправлено: 11:49, 19-02-2015 | #4 |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать Цитата DOCznet:
|
||
Отправлено: 12:29, 19-02-2015 | #5 |
(*.*) Сообщения: 36557
|
Профиль | Сайт | Отправить PM | Цитировать PowerShell (коротко и просто)
в мегабайтах: $colItems = (Get-ChildItem Z:\Dir1\Dir2\arch -recurse | Measure-Object -property length -sum) "{0:N2}" -f ($colItems.sum / 1MB) + " MB" |
------- Отправлено: 13:24, 19-02-2015 | #6 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Vadikan, «коротко и просто» не выйдет:
Цитата DOCznet:
|
|
Отправлено: 14:14, 19-02-2015 | #7 |
(*.*) Сообщения: 36557
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Iska:
|
|
------- Отправлено: 17:27, 19-02-2015 | #8 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Так — выйдет.
|
Отправлено: 19:34, 19-02-2015 | #9 |
Пользователь Сообщения: 55
|
Профиль | Отправить PM | Цитировать Vadikan, большое спасибо, все посчиталось.
|
Отправлено: 10:27, 02-03-2015 | #10 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Любой язык - [решено] Архивирование файлов в каталоге | Tonny_Bennet | Скриптовые языки администрирования Windows | 53 | 11-01-2015 13:11 | |
CMD/BAT - [решено] Скрипт очищения файлов в каталоге. Помогите | Alexander1989 | Скриптовые языки администрирования Windows | 4 | 11-07-2014 13:44 | |
CMD/BAT - [решено] Список файлов в каталоге и подкаталогах | foma24 | Скриптовые языки администрирования Windows | 8 | 22-12-2013 19:58 | |
Любой язык - [решено] Распределение файлов в каталоге | Тишина | Скриптовые языки администрирования Windows | 2 | 26-04-2013 17:09 | |
[решено] Файлы большого размера (место в каталоге) | semenK | Общий по FreeBSD | 8 | 17-01-2006 20:09 |
|