【发布时间】:2017-02-03 14:49:22
【问题描述】:
我正在尝试在当前目录中查找特定文件夹的大小,例如“日志”。请向我建议仅用于检索“日志”文件夹大小的批处理命令。
【问题讨论】:
标签: batch-file command
我正在尝试在当前目录中查找特定文件夹的大小,例如“日志”。请向我建议仅用于检索“日志”文件夹大小的批处理命令。
【问题讨论】:
标签: batch-file command
我建议一个窗口命令它递归显示所有文件大小,最后一行显示文件夹的总大小
“目录 /S 日志”
【讨论】:
@echo off
for /f "tokens=2 delims=," %%a in ('dir /s /-c log\^|findstr /b /c:" "') do (
for /f "tokens=1" %%b in ("%%a") do set x=%%b& goto :done
)
:done
echo %x% Bytes in this folder (and subfolders)
令牌可能需要适应当地语言。
【讨论】:
/-C 选项添加到dir,这样就不再需要显式删除(取决于语言环境的)千位分隔符...
/-c。
你可以试试这个(Batch/Vbscript)文件:
@echo off
Title Get Size of Folder and its subfolders
set "Folder=C:\log"
Set Log=Folder_Size.txt
(
echo The size of "%Folder%" is
Call :GetSize "%Folder%"
)> "%Log%"
For /f "delims=" %%a in ('Dir "%Folder%" /AD /b /s') do (
(
echo The size of "%%a" is
Call :GetSize "%%a"
)>> "%Log%"
)
start "" "%Log%"
::***********************************************************************
:GetSize
(
echo wscript.echo GetSize("%~1"^)
echo Function GetSize(MyFolder^)
echo Set fso = CreateObject("Scripting.FileSystemObject"^)
echo Set objFolder= fso.GetFolder(MyFolder^)
echo GetSize = FormatSize(objFolder.Size^)
echo End Function
echo '*******************************************************************
echo 'Function to format a number into typical size scales
echo Function FormatSize(iSize^)
echo aLabel = Array("bytes", "KB", "MB", "GB", "TB"^)
echo For i = 0 to 4
echo If iSize ^> 1024 Then
echo iSize = iSize / 1024
echo Else
echo Exit For
echo End If
echo Next
echo FormatSize = Round(iSize,2^) ^& " " ^& aLabel(i^)
echo End Function
echo '*******************************************************************
)>%tmp%\Size.vbs
Cscript /NoLogo %tmp%\Size.vbs
Del %tmp%\Size.vbs
Exit /b
::***********************************************************************
编辑:2016 年 9 月 27 日 仅用于一个文件夹,没有递归:
@echo off
mode con cols=67 lines=5 & Color 0A
Title Get Size of Folder and its subfolders
set "Folder=C:\HackooTest"
Set Log=%Folder%_Size.txt
(
echo The size of "%Folder%" is
Call :GetSize "%Folder%"
)> "%Log%"
echo The size of "%Folder%" is
Call :GetSize "%Folder%"
pause & Start "" "%Log%"
exit
::***********************************************************************
:GetSize
(
echo wscript.echo GetSize("%~1"^)
echo Function GetSize(MyFolder^)
echo Set fso = CreateObject("Scripting.FileSystemObject"^)
echo Set objFolder= fso.GetFolder(MyFolder^)
echo GetSize = FormatSize(objFolder.Size^)
echo End Function
echo '*******************************************************************
echo 'Function to format a number into typical size scales
echo Function FormatSize(iSize^)
echo aLabel = Array("bytes", "KB", "MB", "GB", "TB"^)
echo For i = 0 to 4
echo If iSize ^> 1024 Then
echo iSize = iSize / 1024
echo Else
echo Exit For
echo End If
echo Next
echo FormatSize = Round(iSize,2^) ^& " " ^& aLabel(i^)
echo End Function
echo '*******************************************************************
)>%tmp%\Size.vbs
Cscript /NoLogo %tmp%\Size.vbs
Del %tmp%\Size.vbs
Exit /b
::***********************************************************************
【讨论】: