文件夹大小排序bat脚本

很多时候我们需要清理文件时需要分析文件夹大小并排序,但默认文件浏览器没有这个功能,虽然有像foldersize,tc等软件有类似的功能,但每次安装这些软件有些不便,所以写了这个脚本用系统默认装好的bat和powershell分析文件夹大小并排序,放在某个目录运行会分析该文件夹宁且可以进步退步分析文件夹

@echo off&setLocal EnableDelayedExpansion
chcp 65001>nul
color 03

:main
    echo 正在分析%cd%文件夹,请稍等...
    set "of=%userprofile%\learn\sorttemp"
    if exist %of% (rd /s /q %of%)
    mkdir %of%
    for /f "delims=" %%i in ('dir /ad /b ^| find /c /v ""') do set folder_count=%%i
    for /f "delims=" %%i in ('dir /a-d /b ^| find /c /v ""') do set file_count=%%i
    echo | set /p dummyName=大小:  >>%of%\totalfoldersize.txt
    powershell -command "$totalsize=[long]0;gci %cd% -File -r -fo -ea Silent|ForEach-Object{$totalsize+=$_.Length};$totalsize">>%of%\totalfoldersize.txt
    powershell -Command "$content = Get-Content -Path '%of%\totalfoldersize.txt' -Encoding UTF8; Set-Content -Path '%of%\totalfoldersize.txt' -Value $content -Encoding Unicode"
    powershell -ExecutionPolicy Bypass -Command "Get-Content '%of%\totalfoldersize.txt' | ForEach-Object { $line = $_; $split = $line.Split(':'); $value = [double]$split[1]; if ($value -lt 1024) { $size = '{0:N3}' -f $value + ' B' } elseif ($value -lt 1048576) { $size = '{0:N3}' -f ($value / 1024) + ' KB' } elseif ($value -lt 1073741824) { $size = '{0:N3}' -f ($value / 1048576) + ' MB' } else { $size = '{0:N3}' -f ($value / 1073741824) + ' GB' }; Write-Output ($split[0] + ':' + $size) }| Out-File '%of%\totalf.txt' -Encoding UTF8"
        for %%i in (*) do (
            if %%~zi NEQ 0 (
                set a/ count+=1
                echo %%~nxi:%%~zi>>%of%\file.txt))    
    set "inputFile=%of%\file.txt"
    for /d %%i in (*) do (
        echo | set /p dummyName=[dir]%%i:
        powershell -command "$totalsize=[long]0;gci %%i -File -r -fo -ea Silent|ForEach-Object{$totalsize+=$_.Length};$totalsize")>>%of%\file.txt
    powershell -Command "$content = Get-Content -Path '%inputFile%' -Encoding UTF8; Set-Content -Path '%inputFile%' -Value $content -Encoding Unicode"
    set "outputFile=%of%\sorted_file.txt"
    set "outputFile1=%of%\sorted_file1.txt"
    powershell -Command "(Get-Content '%inputFile%') | ForEach-Object { [regex]::Match($_, ':(.*)$').Groups[1].Value + ':' + $_ } | Sort-Object -Property @{ Expression={[double]($_ -split ':')[0]} } | ForEach-Object { $_ -replace '^[^:]+:' } | Out-File '%outputFile%' -Encoding UTF8"
    powershell -Command "$content = Get-Content -Path '%outputFile%' -Encoding UTF8; Set-Content -Path '%outputFile%' -Value $content -Encoding Unicode"
    powershell -ExecutionPolicy Bypass -Command "Get-Content '%outputFile%' | ForEach-Object { $line = $_; $split = $line.Split(':'); $value = [double]$split[1]; if ($value -lt 1024) { $size = '{0:N3}' -f $value + ' B' } elseif ($value -lt 1048576) { $size = '{0:N3}' -f ($value / 1024) + ' KB' } elseif ($value -lt 1073741824) { $size = '{0:N3}' -f ($value / 1048576) + ' MB' } else { $size = '{0:N3}' -f ($value / 1073741824) + ' GB' }; Write-Output ($split[0] + ':' + $size) }| Out-File '%outputFile1%' -Encoding UTF8"
    for /f "tokens=1,2 delims=:" %%a in (%outputFile1%) do (
        set "string=%%a"
        set "byte=%%b"
        for /f %%c in ('cmd /u /c echo %%string%%^|find /v /c ""') do set /a "byte_count=%%c*2"
        rem 格式化第一个字符串
        if "!string:~30!"=="" (
            set "formatted_string=!string!"
            set /a "space_count=60-byte_count/2"
            for /l %%d in (1,1,!space_count!) do set "formatted_string=!formatted_string! "
        ) else (
            set "formatted_string=!string:~0,10!.....!string:~-15!%5"
            set /a "space_count=61-byte_count/2"
            for /l %%d in (1,1,!space_count!) do set "formatted_string=!formatted_string! "
        )
        echo !formatted_string!!byte!
    )
    echo | set /p dummyName=当前文件夹是%cd%,其中有%file_count%个文件,%folder_count%个文件夹,
    type %of%\totalf.txt
    if exist %of% (rd /s /q %of%)
    set /p pathnew=请输入需要分析文件夹名称([dir]表示文件夹,按..可分析上一个文件夹):
    REM 判断路径是否存在
    if %pathnew% equ ".." (
        cd ..
        call :main
    )
    if exist %cd%\%pathnew% (
        cd %cd%\%pathnew%
        call :main
    )
        call :main
goto :eof

 

 

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要清理C盘并查看各个文件夹大小,可以按照以下步骤进行: 1. 首先,右击C盘的图标,选择“属性”选项。这将打开C盘的属性窗口。 2. 在属性窗口中,可以看到“常规”、“工具”、“硬件”和“安全”等选项卡。点击“工具”选项卡。 3. 在工具选项卡中,可以看到“错误检查”、“碎片整理”和“备份”等按钮。点击“错误检查”按钮。 4. 点击“错误检查”按钮后,会出现一个新的对话框。在这个对话框中,点击“开始”按钮。系统会开始扫描C盘并检查是否存在一些错误。 5. 检查完成后,在属性窗口的“工具”选项卡中,点击“碎片整理”按钮。系统会开始对C盘进行碎片整理,以提高硬盘的读写速度。 6. 碎片整理完成后,返回到属性窗口的“常规”选项卡。在这里,可以看到C盘的总空间、已使用空间和可用空间。 7. 点击“其他”按钮,可以看到C盘下各个文件夹大小。可以根据需要选择具体的文件夹进行清理。 8. 如果需要进一步了解文件夹大小,可以打开每个文件夹并查看其中的文件和子文件夹。可以通过右击文件夹并选择“属性”选项来查看文件夹大小。 9. 根据具体情况,可以删除无用的文件或将它们移动到其他位置,以释放C盘的空间。 总之,清理C盘并查看各文件夹大小可以通过以上步骤完成。这样可以清理不必要的文件,并确保C盘有足够的可用空间来提高电脑的性能。 ### 回答2: 清理C盘是指清理计算机硬盘上C盘下的无用文件和垃圾文件,以释放硬盘空间并提升计算机性能。通过查看各文件夹大小可以了解各文件夹占用的空间大小,帮助我们确定哪些文件夹中的文件较大,从而采取相应的清理措施。 首先,我们可以通过打开“我的电脑”或“此电脑”,进入C盘所在的位置。然后,右键点击C盘,选择“属性”,在弹出的属性窗口中可以看到C盘的总容量、已用空间和可用空间等信息。 接下来,我们可以点击“清理磁盘空间”按钮,系统会扫描C盘中的无用文件。然后,我们可以点击“清除系统文件”按钮,系统会再次扫描并列出更多可以清理的文件,如临时文件、回收站文件等,选择并删除不需要的文件。 此外,我们还可以使用第三方的文件大小查看工具,如WinDirStat、TreeSize等软件,来查看各文件夹大小。这些软件可以扫描硬盘上的所有文件和文件夹,并以图形化的方式展示各文件夹大小占比,可以帮助我们快速定位大文件,从而进行针对性的清理。 在清理C盘时,需要谨慎操作,避免删除系统关键文件或重要的个人文件。建议在清理之前备份重要数据,同时定期清理无用文件可以保持C盘的清爽,使计算机运行更加流畅。 ### 回答3: 清理C盘和查看各文件夹大小是指针对计算机硬盘中C盘的存储空间进行整理和优化的操作。以下是具体操作步骤: 1. 清理C盘:首先,我们可以通过Windows系统自带的磁盘清理工具来清理C盘中的临时文件、回收站文件等垃圾文件。打开“此电脑”或“我的电脑”,右键点击C盘,选择“属性”,在“通用”选项卡下找到“磁盘清理”,点击“清理系统文件”按钮,选择要清理的文件类型,然后选中“确定”按钮。系统会自动删除这些不需要的文件,回收C盘的存储空间。 2. 查看各文件夹大小:可以通过资源管理器来查看各文件夹大小。打开资源管理器,在左侧导航栏中选择“此电脑”或“我的电脑”,然后点击C盘。显示C盘下的文件和文件夹列表。在顶部的菜单栏中,选择“查看”选项卡,然后在“布局”区域点击“详细信息”。这样,就能看到每个文件夹大小信息。可以按照文件夹大小进行排序,从大到小或从小到大,方便查找占用较多存储空间的文件夹。 总结:清理C盘可以通过系统自带的磁盘清理工具进行操作。查看各文件夹大小可通过资源管理器的详细信息视图实现。清理C盘和查看各文件夹大小的操作,有助于及时清理垃圾文件,释放C盘的存储空间,提高计算机性能并更好地管理文件和文件夹

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值