【问题标题】:batch command to find a particular folder size批处理命令查找特定文件夹大小
【发布时间】:2017-02-03 14:49:22
【问题描述】:

我正在尝试在当前目录中查找特定文件夹的大小,例如“日志”。请向我建议仅用于检索“日志”文件夹大小的批处理命令。

【问题讨论】:

标签: batch-file command


【解决方案1】:

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

“目录 /S 日志”

【讨论】:

    【解决方案2】:
    @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,这样就不再需要显式删除(取决于语言环境的)千位分隔符...
    • @aschipfl 啊 - 我没想到/-c
    【解决方案3】:

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

    【讨论】:

    • 非常感谢您的建议。在这里,我得到了日志文件夹中所有单个文件夹和子文件夹的大小。我的实际要求是获得一个单词输出,它仅显示整个日志文件夹的大小。你能在这里给个建议吗?
    • 使用最后的编辑代码,我在下面得到:它显示硬编码字符串'路径/文件夹的大小是'但不是大小值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多