|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] узнать размер папок. экспорт в txt |
|
CMD/BAT - [решено] узнать размер папок. экспорт в txt
|
Старожил Сообщения: 268 |
как реализовать через bat либо vbs
чтобы узнать полный размер всех папок, которые находятся с .bat в одной папке. и сохранить список размеров по порядочку в txt (без названия папок. просто столбик размеров в Мб (желательно) либо в Кб) как сделать чтобы полный размер папок считался так, как будто я на нее в винде нажал alt+enter |
|
Отправлено: 20:36, 21-05-2010 |
Ветеран Сообщения: 1273
|
Профиль | Отправить PM | Цитировать Цитата shadowbat:
@Echo Off SetLocal EnableDelayedExpansion Echo WScript.Echo CreateObject("Scripting.FileSystemObject").GetFolder(WScript.Arguments(0)).Size>GetDirSize.vbs For /D %%A In (*) Do ( For /F %%B In ('CScript //Nologo GetDirSize.vbs "%%A"') Do ( Set Bytes=%%B Set /A IntMB=!Bytes!/1048576 Set /A IntKB=!Bytes!/1024 Set /A FloatMB=!Bytes!%%1048576/10000 Set /A FloatKB=!Bytes!%%1024/10 ) Echo !IntMB!,!FloatMB! MBytes or !IntKB!,!FloatKB! KBytes or !Bytes! Bytes>>GetDirsSize.txt ) EndLocal Del /F /Q GetDirSize.vbs 1>nul 2>&1 |
|
Отправлено: 22:35, 21-05-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 268
|
Профиль | Отправить PM | Цитировать мммм... какая вкуснятина!! работает!
я смотрю, зная такой язык програмирования можно легко себе наваять тучу программ которые справятся с текущими задачами. чем искать в интернете нужную тебе перебирая десятки бесполезных! |
Отправлено: 22:59, 21-05-2010 | #3 |
Ветеран Сообщения: 2732
|
Профиль | Отправить PM | Цитировать Мне кажется то, что предложено El Sanchez несколько эклектично, хотя по своему очень интересно, логичнее всё сделать в VBS, да и если к какой-либо папке нет доступа (например, чаще всего "System Volume Information" или к какой-то сетевой) приведенное решение не отработает.
Вот решение полностью на VBS DirName = "c:\TraLaLa\" ' DirName = "" ' Если скрипт в исследуемой папке и не хочется указывать к ней путь If Len(DirName)=0 Then DirName=Replace(WScript.ScriptFullName,WScript.ScriptName,"") WhereOut = DirName + "SizeSubDir.inf" Set FSO = CreateObject("Scripting.FileSystemObject") Set Folders = FSO.GetFolder(DirName).SubFolders Out = "" For Each Folder In Folders On Error Resume Next FolderSize = CStr(Round(Folder.Size / 1024 / 1024,2)) If Err.Number <> 0 Then FolderSize = "Не определено" FolderSize = Right(" " + FolderSize, 14) Out = Out + FolderSize + " " + Folder.Name + vbCrLf ' Если не надо имена, удалить +" "+Folder.Name Next Set F = FSO.OpenTextFile(WhereOut, 2, True) F.Write Out F.Close DirName = "" (в приведенном скрипте эта строка закомментирована и не выполняется) |
------- Последний раз редактировалось megaloman, 22-05-2010 в 01:02. Отправлено: 23:56, 21-05-2010 | #4 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата El Sanchez:
так что вариантов два: - округлять простым отбрасыванием младших цифр в строке (3/6/9) через SET; - включить эту функциональность в VBS-модуль: CHCP 1251 >Nul Echo Do While Not WScript.StdIn.AtEndOfStream::WScript.Echo Round(CreateObject("Scripting.FileSystemObject").GetFolder(WScript.StdIn.ReadLine).Size/2^^20,2)::Loop>GetDirSize.vbs DIR /AD/B|CScript //Nologo GetDirSize.vbs Echo Do While Not WScript.StdIn.AtEndOfStream::WScript.Echo Round(CreateObject("Scripting.FileSystemObject").GetFolder(WScript.StdIn.ReadLine).Size/2^^20,2)::Loop>GetDirSize.vbs CMD /U/C "DIR /AD/B"|CScript //U //Nologo GetDirSize.vbs Цитата megaloman:
|
|||
Последний раз редактировалось amel27, 22-05-2010 в 09:22. Причина: + юникод Отправлено: 08:31, 22-05-2010 | #5 |
Ветеран Сообщения: 2732
|
Профиль | Отправить PM | Цитировать Цитата amel27:
Echo Off del SizeSubDir.inf >Nul FOR /F "usebackq delims=" %%i IN (`dir /A:D /B`) DO Call :SubDir "%%~fi" "%%i" GoTo :EOF :SubDir Set Size=0 FOR /R %1 %%s IN (*.*) DO Call :SubDirSize %%~zs rem Если мегабайты rem Set /A Size=%Size%/1048576 rem Set Size= %Size% rem Echo %Size:~-6% Mb %2>>SizeSubDir.inf rem Если килобайты Set /A Size=%Size%/1024 Set Size= %Size% Echo %Size:~-9% Kb %2>>SizeSubDir.inf GoTo :EOF :SubDirSize Set /A Size=%Size%+%1 |
|
------- Последний раз редактировалось megaloman, 22-05-2010 в 11:55. Отправлено: 10:53, 22-05-2010 | #6 |
Старожил Сообщения: 268
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
![]() |
|
Отправлено: 11:00, 22-05-2010 | #7 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
Цитата megaloman:
Цитата shadowbat:
|
|||
Отправлено: 14:11, 22-05-2010 | #8 |
Сообщения: 53534
|
Профиль | Отправить PM | Цитировать |
Отправлено: 15:41, 22-05-2010 | #9 |
Пользователь Сообщения: 54
|
Профиль | Отправить PM | Цитировать DirName = "c:\TraLaLa\" ' DirName = "" ' Если скрипт в исследуемой папке и не хочется указывать к ней путь If Len(DirName)=0 Then DirName=Replace(WScript.ScriptFullName,WScript.ScriptName,"") WhereOut = DirName + "SizeSubDir.inf" Set FSO = CreateObject("Scripting.FileSystemObject") Set Folders = FSO.GetFolder(DirName).SubFolders Out = "" For Each Folder In Folders On Error Resume Next FolderSize = CStr(Round(Folder.Size / 1024 / 1024,2)) If Err.Number <> 0 Then FolderSize = "Не определено" FolderSize = Right(" " + FolderSize, 14) Out = Out + FolderSize + " " + Folder.Name + vbCrLf ' Если не надо имена, удалить +" "+Folder.Name Next Set F = FSO.OpenTextFile(WhereOut, 2, True) F.Write Out F.Close Подскажите, что надо дописать в этот скрипт, что бы в конце был суммирующий результат папки c:\TraLaLa\ |
Отправлено: 14:32, 10-11-2018 | #10 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - [решено] Размер папок | NIC444 | Microsoft Windows 7 | 5 | 15-09-2014 09:32 | |
Отображаемый размер квотируемых папок | rrev | Microsoft Windows NT/2000/2003 | 7 | 29-09-2009 09:46 | |
[решено] Вставить строчку из одного txt в оределённое место другого txt | ZeroCrash | AutoIt | 7 | 13-07-2009 07:35 | |
Ограничения на размер профиля+исключение папок из профиля | Grug | Microsoft Windows NT/2000/2003 | 2 | 04-03-2009 11:09 | |
Доступ - Ограничение на размер папок | Xavier Teodonius | Microsoft Windows 2000/XP | 2 | 10-04-2008 12:12 |
|