批命令找到一个特定的文件夹大小

问题描述:

我试图找到一个特定文件夹的大小说我的当前目录内的'日志'。请建议我使用批处理命令来检索'log'文件夹的大小。批命令找到一个特定的文件夹大小

+0

相关: [文件夹列表及其大小](http://stackoverflow.com/a/37190069)。 – aschipfl

我暗示一个窗口的命令,它显示递归所有文件的大小和最后一行显示文件夹

的总大小

“DIR/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) 

令牌(一个或多个)可能需要进行调整到当地语言。

+0

我将'/ -C'选项添加到'dir'中,因此不再需要明确删除(依赖于语言环境的)千分隔符... – aschipfl

+0

@aschipfl - 我没考虑过'/ -c '。 – Stephan

你可以试试这个(批号/ 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 
::*********************************************************************** 

编辑:在27/09/2016只是为了一个文件夹,并没有递归:

@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 
::*********************************************************************** 
+0

非常感谢您的建议。在这里,我得到日志文件夹内所有单个文件夹和子文件夹的大小。我的实际要求是获取单个字输出,只显示日志文件夹大小。你能在这里提一个建议吗? – Joey

+0

@Joey检查我最后的编辑;) – Hackoo

+0

与最后编辑代码我得到这个下面:它显示硬编码字符串'路径/文件夹的大小是',但不是大小值。 – Joey