DOCznet
28-11-2013, 18:24
Из-за совсем поверхностных знаний скриптовых инструментов гугл меня не привел к нужному результату.
тот же diruse может выводить только папки больше заданного размера, его я сразу отмел.
В одной из тем на этом форуме было это:
SetLocal enabledelayedexpansion
Set DirProg=c:\dirname
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)
)
Echo !dirsize!
Pause>nul
Но этот скрипт промеряет каждую папку на нефиксированной глубине, что не нужно
Следующий скрипт показался мне наиболее подходящим для докручивания:
DirName = "c:\dirname"
' 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
Может кто-нибудь "допилить" его?
-Интересуют только размер каждой из подпапок заданного каталога, без вычислений объемов каждой из дочерних подпапок
-нет необходимости выводить результат работы скрипта в текстовый файл
-условие для удаления - "больше заданного размера"
тот же diruse может выводить только папки больше заданного размера, его я сразу отмел.
В одной из тем на этом форуме было это:
SetLocal enabledelayedexpansion
Set DirProg=c:\dirname
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)
)
Echo !dirsize!
Pause>nul
Но этот скрипт промеряет каждую папку на нефиксированной глубине, что не нужно
Следующий скрипт показался мне наиболее подходящим для докручивания:
DirName = "c:\dirname"
' 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
Может кто-нибудь "допилить" его?
-Интересуют только размер каждой из подпапок заданного каталога, без вычислений объемов каждой из дочерних подпапок
-нет необходимости выводить результат работы скрипта в текстовый файл
-условие для удаления - "больше заданного размера"