|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] получить размер каталога с подкаталогами |
|
CMD/BAT - [решено] получить размер каталога с подкаталогами
|
Старожил Сообщения: 362 |
Профиль | Отправить PM | Цитировать подскажите, возможно ли это и как?
|
|
------- Отправлено: 15:15, 27-11-2009 |
Сообщения: 53175
|
Профиль | Отправить PM | Цитировать Команда Diruse (Diruse Examples).
Файл Diruse.exe можно взять из установочного CD \Support\Tools\suptools.msi (support.cab). |
Отправлено: 15:24, 27-11-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать |
Отправлено: 15:34, 27-11-2009 | #3 |
Старожил Сообщения: 362
|
Профиль | Отправить PM | Цитировать gora, Вариант хороший, но не мой случай, у меня задан набор каталогов, но способ оригинальный
Petya V4sechkin, Большое спасибо за подсказку. |
------- Отправлено: 15:54, 27-11-2009 | #4 |
Новый участник Сообщения: 9
|
Профиль | Отправить PM | Цитировать gora, Большое спасибо. Немного добавил и получил еще и кол-во файлов:
@Echo Off SetLocal enabledelayedexpansion Set DirProg=c:\musor For /F "skip=4 tokens=1-3" %%a IN ('Dir "%DirProg%" /-C /S /A:-D^|find /I "файлов"') Do ( If !flag!==1 Set dirsize=%%c If "%%b"=="файлов:" (Set flag=1) Else (Set flag=0) set filecnt=%%a ) Echo Размер папки = !dirsize! Echo Количество файлов = !filecnt! Pause>nul |
|
Отправлено: 16:36, 05-11-2010 | #5 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Цитата Oceanel:
|
|
Отправлено: 16:32, 02-02-2011 | #6 |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать Цитата XFNeo:
@Echo Off SetLocal enabledelayedexpansion Set DirProg=c:\Documents and Settings 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 dirsizeT=dirsize+0 If Not "%dirsizeT%"=="%dirsize%" Echo Число %dirsize% слишком велико для обработки в CMD&Pause>nul&Exit Set kb=1024 Set /a mb=kb*kb, gb=kb*kb*kb, dirsizeKB=dirsize/kb, ostKB=dirsize%%kb*100/kb, dirsizeMB=dirsize/mb, ostMB=dirsize%%mb*100/mb Rem Set /a dirsizeGB=dirsize/gb, ostGB=dirsize%%gb*10/gb Echo %dirsize% Б Echo %dirsizeKB%,%ostKB% кБ Echo %dirsizeMB%,%ostMB% МБ Rem Echo %dirsizeGB%,%ostGB% ГБ Pause>nul |
|
Отправлено: 13:20, 03-02-2011 | #7 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать |
Отправлено: 14:15, 03-02-2011 | #8 |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать Цитата XFNeo:
Можете запустить эту команду отдельно и увидите ее вывод примерно такой: Том в устройстве C не имеет метки. Серийный номер тома: 74B4-362D Содержимое папки c:\Musor 16.01.2010 23:50 3238 7z_SFX.ico 16.11.2010 10:34 5035 install_button.bat 22.01.2011 09:02 68608 nircmdc.exe 17.10.2008 14:54 2048 tasktool.exe 4 файлов 78929 байт Содержимое папки c:\Musor\ADD_ 21.01.2011 15:55 4419 ConfigSetupButton.txt 22.06.2010 14:52 670 Copyright.res 13.05.2010 22:44 68416 RC.exe 13.05.2010 22:44 331080 RcDll.dll 24.03.2002 20:23 881664 ResHacker.exe 20.01.2011 15:25 873 Version.rc 6 файлов 1287122 байт Содержимое папки c:\Musor\lang 02.02.2011 08:43 4759 1033.ini 02.02.2011 18:40 4557 1049.ini 02.02.2011 11:11 4597 1058.ini 3 файлов 13913 байт Содержимое папки c:\Musor\SFX Tool 07.01.2011 10:06 113152 7zsd_All.sfx 07.01.2011 10:06 92672 7zsd_Deflate.sfx 07.01.2011 10:06 97792 7zsd_LZMA.sfx 07.01.2011 10:06 100352 7zsd_LZMA2.sfx 07.01.2011 10:06 135680 7zsd_LZMA_Dialogs.sfx 07.01.2011 10:06 92160 7zsd_PPMd.sfx 21.01.2011 16:09 308620 Button.chm 26.06.2007 19:22 53 Desktop.ini 02.02.2011 10:58 2270 Settings.ini.new 9 файлов 942751 байт Всего файлов: 22 файлов 2322715 байт 0 папок 8314302464 байт свободно skip=4 пропускаем первые 4 строки, т.к., в них не может быть нужной информации tokens=1-3 каждую строку разбиваем на части по разделителям (они не определены, значит используются по умолчанию символы пробела и табуляции) и первые три части строки записываем в переменные (%%a, %%b и %%c). В теле цикла ищем нужную строку, содержащую общий размер директории (это вторая снизу строка вывода). Т.к. переменная flag не равна 1 то переходим к следующей строке батника и проверяем есть ли в переменной %%b нужное слово файлов: с двоеточием в конце! Это слово появится только когда цикл дойдет до третьей с конца строки. В этом случае переменной flag будет присвоено значение 1. При обработке следующей строки вывода (предпоследняя строка) команда сработает и запишет размер директории из %%c в переменную dirsize. После этого строка батника снова сбросит переменную flag в 0, дабы не перезаписывать переменную dirsize при обработке последней строки вывода. |
|
Отправлено: 15:58, 03-02-2011 | #9 |
Ветеран Сообщения: 2183
|
Профиль | Отправить PM | Цитировать Есть скрипт для удаления временных файлов. Подскажите, как его дополнить, чтобы получить общую сумму удалённых файлов, в мегабайтах до десятых.
@Echo Off color 1a mode con: cols=57 lines=16 echo. echo ----------------------------------------------------- echo “„Ђ‹…Ќ?… ‚ђ…Њ…ЌЌ›• ”Ђ‰‹Ћ‚ echo ----------------------------------------------------- echo. echo. PUSHD "%WinDir%\TEMP" 2>Nul RD /S/Q "%WinDir%\TEMP" POPD echo ЋзЁбвЄ* Ї*ЇЄЁ ’emp - OK set Opera_temp=%USERPROFILE%\Local Settings\Application Data\Opera\opera\cache PUSHD "%Opera_temp%" 2>Nul RD /S/Q "%Opera_temp%" POPD echo ЋзЁбвЄ* ўаҐ¬Ґ**ле д*©«®ў Opera - OK 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 set IE_temp=%USERPROFILE%\Local Settings\Temporary Internet Files PUSHD "%IE_temp%" 2>Nul RD /S/Q "%IE_temp%" POPD echo ЋзЁбвЄ* ўаҐ¬Ґ**ле д*©«®ў Internet Explorer - OK set rst=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches Reg Add "%rst%\Recycle Bin" /v StateFlags0001 /t REG_DWORD /d 2 /f | Echo Off For /F "UseBackQ Tokens=2*" %%I In (`Reg Query %rst%^|Find /I "Compress old files"`) Do Reg Delete "%rst%\Compress old files" /f | Echo Off Cleanmgr /sagerun:1 echo ЋзЁбвЄ* Є®а§Ё*л ** ўбҐе ¤ЁбЄ*е - OK echo. echo. echo ЋзЁбвЄ* ўлЇ®«*Ґ**, г¤*«Ґ*® ее,е ЊЎ. ping 127.0.0.1 -n 8 > nul |
Отправлено: 10:32, 01-04-2011 | #10 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|