Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] узнать размер папок. экспорт в txt

Ответить
Настройки темы
CMD/BAT - [решено] узнать размер папок. экспорт в txt

Старожил


Сообщения: 267
Благодарности: 8

Профиль | Отправить PM | Цитировать


Изменения
Автор: shadowbat
Дата: 21-05-2010
как реализовать через bat либо vbs

чтобы узнать полный размер всех папок, которые находятся с .bat в одной папке.
и сохранить список размеров по порядочку в txt (без названия папок. просто столбик размеров в Мб (желательно) либо в Кб)

как сделать чтобы полный размер папок считался так, как будто я на нее в винде нажал alt+enter

Отправлено: 20:36, 21-05-2010

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата palexa:
Подскажите, что надо дописать в этот скрипт, что бы в конце был суммирующий результат папки c:\TraLaLa\ »
Ничего.
Быстро
Код: Выделить весь код
Option Explicit

WScript.Echo WScript.CreateObject("Scripting.FileSystemObject").GetFolder("C:\Мои проекты").Size

WScript.Quit 0
Правильно
Код: Выделить весь код
Option Explicit

Dim strSourceFolder

Dim objFSO
Dim objFile


If WScript.Arguments.Count = 1 Then
	strSourceFolder = WScript.Arguments.Item(0)
	
	Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
	
	If objFSO.FolderExists(strSourceFolder) Then
		WScript.Echo objFSO.GetFolder(strSourceFolder).Size
	Else
		WScript.Echo "Can't find source folder [" & strSourceFolder & "]."
		WScript.Quit 2
	End If
	
	Set objFSO = Nothing
Else
	WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptName & """ <Source folder>"
	WScript.Quit 1
End If

WScript.Quit 0

Отправлено: 14:51, 10-11-2018 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 54
Благодарности: 1

Профиль | Отправить PM | Цитировать


Что значит ничего ?

Скрипт создаёт файл в котором пишет размер + название каждой папки в директории c:\TraLaLa\

Осталось дописать что бы определил размер самой директории c:\TraLaLa\ и тоже дописал в этот файл

Может всё таки поможете ?

Отправлено: 15:15, 10-11-2018 | #12


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
Next

With FSO.GetFolder(DirName)
    Out = Out & CStr(Round(.Size / 2^20, 2)) & "  " & .Name & vbCrLf
End With

Set F = FSO.OpenTextFile(WhereOut, 2, True)
Не проверялось.

Последний раз редактировалось Iska, 10-11-2018 в 16:20. Причина: Поправил код.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:33, 10-11-2018 | #13


Пользователь


Сообщения: 54
Благодарности: 1

Профиль | Отправить PM | Цитировать


не дописывает

Последний раз редактировалось palexa, 11-11-2018 в 05:55.


Отправлено: 15:42, 10-11-2018 | #14


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Поправил код. Пробуйте.

Отправлено: 16:19, 10-11-2018 | #15


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


palexa, О, неужели это я ваял? Как молоды мы были ... Вставьте между выделенным
Код: Выделить весь код
Next

If FSO.FileExists(WhereOut) Then FSO.DeleteFile (WhereOut)

FolderSize = CStr(Round(FSO.GetFolder(DirName).Size / 1024 / 1024, 2))
FolderSize = Right("              " + FolderSize, 14)
Out = Out + FolderSize + "  " + DirName

Set F = FSO.OpenTextFile(WhereOut, 2, True)
Возможна неточность: при существующем пути к Out-файлу общий размер папки после работы скрипта будет отличаться на размер выходного файла. Но, скорее всего, его размер много меньше общего размера папки и на результате не скажется.
Либо надо явно прописать другой путь к выходному файлу в любое доступное место вне анализируемой папки, например
Код: Выделить весь код
WhereOut = "Z:\SizeSubDir.inf"

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:29, 10-11-2018 | #16


Пользователь


Сообщения: 54
Благодарности: 1

Профиль | Отправить PM | Цитировать


Iska и megaloman спасибо большое

Отправлено: 16:49, 10-11-2018 | #17


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата megaloman:
Возможна неточность: при существующем пути к Out-файлу общий размер папки после работы скрипта будет отличаться на размер выходного файла. »
Не будет. Вы же его создаёте после подсчёта.

Отправлено: 17:39, 10-11-2018 | #18


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


palexa,
А попробуйте вот такой батник
Код: Выделить весь код
@Echo Off
cls
	Set "BoxIn=D:\Мой контент"
	Set "Out=D:\Мой контент.inf"

	Set "Def="
	Set "Marg=   "
	Set "Marg="
	
	Call :DSize "%BoxIn%" "iSize"
	>"%Out%" Echo %iSize%  %BoxIn%

	For /F "usebackq delims=" %%d IN (`2^>nul Dir "%BoxIn%" /B /A:D`) DO Call :Out "%BoxIn%\%%d" %Def%- "%Marg%" 
pause
GoTo :Eof

:Out
	Call :DSize %1 "iSize"
	>>"%Out%" Echo %iSize%  %~3%2%~nx1
	For /F "usebackq delims=" %%d IN (`2^>nul Dir %1 /B /A:D`) DO Call :Out "%~1\%%d" %2- "%~3%Marg%"
GoTo :Eof

:DSize
SetLocal EnableExtensions EnableDelayedExpansion
	For /F "usebackq delims=" %%z IN (`2^>nul Dir %1 /S /A`) DO Set ZZ=!Z1! &Set Z1=%%z
	Set "ZZ=%ZZ:~5%"
EndLocal &Set "%~2=%ZZ%"
GoTo :Eof
Цитата Iska:
Не будет. Вы же его создаёте после подсчёта. »
Увы, будет. После подсчета файл записывается внутрь рассматриваемой папки и его размер в общем итоге не учтен.
Цитата megaloman:
Либо надо явно прописать другой путь к выходному файлу в любое доступное место вне анализируемой »

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 10-11-2018 в 20:26. Причина: Почему-то так, с ключом /A, работает правильнее???


Отправлено: 17:43, 10-11-2018 | #19


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата megaloman:
Увы, будет. После подсчета файл записывается внутрь рассматриваемой папки и его размер в общем итоге не учтен. »
А… Вы вот в каком плане. Ну, так я про то же. Только я-то полагал, что именно так и будет правильным считать — без его учёта.

Отправлено: 17:57, 10-11-2018 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] узнать размер папок. экспорт в txt

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - [решено] Размер папок 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




 
Переход