You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用CMD按大小排序显示C盘所有文件,避免按目录分组?

解决CMD中C盘文件全局按大小排序显示的问题

CMD自带的dir命令存在局限性:使用/s参数遍历子目录时,它会先处理当前目录,再逐个遍历子目录,并且/o-s仅对每个目录内的文件单独排序,最终输出会按目录分组,无法实现所有文件的全局统一排序。

以下提供两种可行的解决方法:

方法1:使用PowerShell命令(推荐,简洁高效)

直接在CMD窗口中执行以下命令,即可全局按文件大小降序输出C盘所有文件的完整路径:

powershell -Command "Get-ChildItem C:\ -File -Recurse | Sort-Object -Property Length -Descending | Select-Object -ExpandProperty FullName"

命令说明:

  • Get-ChildItem C:\ -File -Recurse:遍历C盘所有文件(排除目录)
  • Sort-Object -Property Length -Descending:按文件大小(Length)降序排序
  • Select-Object -ExpandProperty FullName:提取并输出文件的完整路径

方法2:纯CMD脚本实现

如果必须使用纯CMD环境,可创建一个批处理脚本(例如sort_files.bat),内容如下:

@echo off
setlocal enabledelayedexpansion

:: 跳过dir命令的头部无关信息,提取文件大小和完整路径
for /f "skip=5 tokens=3*" %%a in ('dir C:\ /a-d /s /-c /n') do (
    :: 将文件大小补为10位数字,确保排序时数值逻辑正确
    set "file_size=0000000000%%a"
    set "file_size=!file_size:~-10!"
    :: 输出补位后的大小+文件路径,供后续排序
    echo !file_size! %%b
) | sort /r | for /f "tokens=2*" %%a in ('more') do (
    :: 去掉补位的大小,仅输出文件路径
    echo %%a %%b
)

endlocal

脚本说明:

  • dir C:\ /a-d /s /-c /n:输出C盘所有文件的信息,/-c去掉大小的千分位分隔符,/n让文件名在末尾便于提取
  • 补位文件大小是为了避免sort命令按文本排序时出现逻辑错误(例如1000被排在999前面)
  • sort /r实现降序排序,最后提取并输出文件路径

内容的提问来源于stack exchange,提问作者Андрій Іванович Федоришин

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 16:15:37