Windows Dir命令-按大小排序子目录

Windows Dir命令-按大小排序子目录,windows,windows-8,command-line,dir,Windows,Windows 8,Command Line,Dir,如何使用dir命令从最大到最小显示文件夹的子目录 我尝试过使用dir/O:-S命令,虽然它对文件进行了很好的排序,但似乎没有对子目录进行排序 理想情况下,该命令应该能够向下几个级别;其中一些子文件夹有自己的文件夹。例如: D:/ |-- Folder 1 |-- Subfolder 1 +-- Subfolder 2 |--Another folder +-- Folder 2 假设文件夹1(包括其子文件夹中的所有文件)的总大小为10GB,文件夹2的总大小为15

如何使用dir命令从最大到最小显示文件夹的子目录

我尝试过使用
dir/O:-S
命令,虽然它对文件进行了很好的排序,但似乎没有对子目录进行排序

理想情况下,该命令应该能够向下几个级别;其中一些子文件夹有自己的文件夹。例如:

D:/
|-- Folder 1
    |-- Subfolder 1
    +-- Subfolder 2
        |--Another folder
+-- Folder 2
假设文件夹1(包括其子文件夹中的所有文件)的总大小为10GB,文件夹2的总大小为15GB,我将如何输出按总内容大小排序的顺序


提前谢谢

已编辑:显示从最大到最小的文件夹

看看这是不是你需要的<代码>d:\files是此处的目标树

@echo off
for /f "delims=" %%a in (' dir "d:\files" /ad /b /s ') do call :size "%%a"
sort /r < "dirsize.tmp"
del "dirsize.tmp"
popd
pause
goto :eof

:size
for /f "tokens=3" %%b in ('dir "%~1" 2^>nul ^|find " File(s) "') do (
for /f "tokens=1-4 delims=," %%c in ("%%b") do (
set dirsize=%%c%%d%%e%%f
)
)
set dirsize=                    %dirsize%
set dirsize=%dirsize:~-20%
>>"dirsize.tmp" echo %dirsize% "%~1"

这似乎适用于更改的需求:将
c:\folder
更改为要查询的文件夹级别

@echo off
pushd "c:\folder"
for /f "delims=" %%a in (' dir /ad /b ') do call :size "%%~fa"
sort /r < "%temp%\dirsize.tmp"
del "%temp%\dirsize.tmp"
popd
pause
goto :eof

:size
for /f "tokens=3" %%b in ('dir /s "%~1" 2^>nul ^|find " File(s) "') do set "n=%%b"
set dirsize=%n%
REM set dirsize=%dirsize:,=%
set dirsize=                 %dirsize%
set dirsize=%dirsize:~-18%
>>"%temp%\dirsize.tmp" echo %dirsize% "%~1"
@echo关闭
pushd“c:\文件夹”
对于/f“delims=”('dir/ad/b')中的%%a,请调用:size“%%~fa”
排序/r<%temp%\dirsize.tmp
删除“%temp%\dirsize.tmp”
邻苯二胺
暂停
后藤:eof
:尺寸
对于('dir/s“%~1”2^>nul^| find“File(s)”)中的/f“tokens=3”%%b,请设置“n=%%b”
设置目录大小=%n%
REM set dirsize=%dirsize:,=%
设置dirsize=%dirsize%
设置dirsize=%dirsize:~-18%
>>%temp%\dirsize.tmp“echo%dirsize%”“%~1”

这是一个很老的问题,但我不知道为什么我所有的朋友都回答说没有这样的命令。命令如下:

主管:s

我看到一些评论说它不能在文件夹上工作,这和我编辑我的答案的原因是一样的。此命令也支持文件夹

我在本地计算机上的一个文件夹中运行了这个命令,下面是输出
d:\Moody>dir/o:s
驱动器D中的卷是数据
卷序列号为CE51-A3E6
d:\Moody目录
2016年6月28日上午11:22。
2016年6月28日上午11:22。。
2016年6月1日下午5:37绑定
2016年5月5日下午06:29 WMQ 8罐
2016年6月27日下午6:51代码库
2016年6月27日下午5:34
2016年6月21日上午11:12 WMQ 7.5罐
2016年5月18日下午12:56测试验证
2016年6月17日下午02:35爪哇文档jms
2016年5月17日下午4:20样本日志
2016年5月20日下午3:28
2016年5月26日下午12:01
2016年6月24日下午12:09新建文件夹
2016年4月5日下午4:55拉链
2016年5月4日下午12:20
2016年4月20日12:58 PM 901 TestValidation.zip
2016年6月22日04:22 PM 7739 team.xlsx
2016年5月13日09:19 PM 8700 sample-log.zip
2016年6月4日03:06 PM 43410序列图。mdj
2016年6月28日11:22 AM 59392 DEV QM.msg的FW绑定文件
2016年5月2日08:04 PM 81568 PocJms.zip
2013年3月21日01:33 PM 99926 fscontext-4.2.jar--
2016年6月22日02:31 PM 236631 java-doc-jms.zip
2016年5月5日下午5:19 7673675 WMQ 7.5罐.zip
2016年5月5日下午5:19 12442322 WMQ 8罐
15个文件21028409字节
19 Dir(s)73162878976可用字节


除了显示大小的文件之外,我的文件夹也被安排好了。当我检查装订尺寸时;近18kb;最后一个文件夹存储库接近1GB。所以它也适用于文件夹。

如果您不需要日期和其他信息,可以使用:

dir /b /a-d /o:s

如果您想要的是支持高达999 TB的单线解决方案:

cmd/v/c“set zeropad=000000000000000,&for/f”delims=“%a in('dir/ad/b')do@set bytes=!zeropad!000&(for/f”tokens=3”%b in('dir/s”%a“2^>NUL^ | find“File)”)do@set bytes=%b)和@for/f“tokens=1*delims=,%c in('echo!bytes!”)do@(set bytes=%c&@set bytes=000!bytes!&@set bytes=!bytes:~-3!&@set bytes=!zeropad!!bytes!&如果“%d”NEQ“set bytes=!bytes!,%d)&@echo!bytes:~-23!%a”|排序/R

如果您同时需要文件和目录,还有一个额外的单行解决方案

cmd /v /c "set zeropad=000,000,000,000,000,&for /f "tokens=4* delims= " %a in ('dir ^| find "/" ^| findstr /E /V /R "DIR^>[ ][ ]*\.\.$ DIR^>[ ][ ]*\.$"') do @set bytes=!zeropad!000&(if "%a" EQU "^<DIR^>" (for /f "tokens=3" %c in ('dir /s "%b" 2^>NUL ^| find "File(s)"') do @set bytes=%c)) & (if "%a" NEQ "^<DIR^>" (set bytes=%a)) & (for /f "tokens=1* delims=," %d in ('echo !bytes!') do @set bytes=%d&@set bytes=000!bytes!&@set bytes=!bytes:~-3!& @set bytes=!zeropad!!bytes!&if "%e" NEQ "" set bytes=!bytes!,%e)& echo !bytes:~-23! %b" | sort /R
cmd/v/c“set zeropad=000000000000000,&for/f”tokens=4*delims=“%a in('dir^ find”/“^ findstr/E/v/R”dir^>[]*.\.$dir^>[]*.[]*.$”)do@set bytes=!zeropad!000&(如果“%a”eq^“(for/f”tokens=3”%c in('dir/s“%b”2^>num^;find”File)“)do@set=%c”)do@set bytes=(如果“%a”NEQ^>令牌=1*delims=,“%d in('echo!bytes!')do@set bytes=%d&@set bytes=000!bytes!&@set bytes=!bytes:~-3!&@set bytes=!zeropad!!bytes!&如果“%e”NEQ“set bytes=!bytes!,%e)&echo!bytes:~-23!%b”|排序/R

我得到了错误
%%a此时是意外的
。其他变量也是如此。有什么想法吗?你是如何运行它的?你在
d:\files
的位置放了什么?它在这里确实起作用。我怀疑你将它粘贴到了cmd提示符中-但它是一个批处理文件。啊,我确实应该将它作为批处理文件运行!但是,它仍然起作用似乎没有按大小排序子文件夹…哦,是的,我读你的问题太快了。请尝试我编辑的代码。修改后的代码似乎无法解决问题。我修改了我的问题以更好地解释自己。非常感谢你的帮助!谢谢!几个问题:1)如何获得字节大小?GB近似值是不必要的,我想用它作为我正在寻找的文件结构的示例。2) 在运行上述代码时,我发现实际上是MB的文件夹显示为GB(例如,659MB显示为659GB)。只是一些我认为值得注意的事情。是的,它被搞糟了。我已将其编辑为报告字节,如果要删除逗号,请删除行开头的
REM
。检查此项了解详细信息:此项不适用于文件夹,仅适用于文件。你的朋友是对的。不@katzenhut。。。。。看看这个。在我的一个dir命令中,dir/o:s给出如下:-----输出------01-Jun-2016 05:37 PM binding>>>由于ans变得太长而删除了行04-May-2016 12:20 PM PocJms 26-May-2016 12:01 PM repository 20-Apr-2016 12:58 PM
d:\Moody>dir /o:s
 Volume in drive D is Data
 Volume Serial Number is CE51-A3E6

 Directory of d:\Moody

28-Jun-2016  11:22 AM    <DIR>          .
28-Jun-2016  11:22 AM    <DIR>          ..
01-Jun-2016  05:37 PM    <DIR>          binding
05-May-2016  06:29 PM    <DIR>          WMQ 8 JARS
27-Jun-2016  06:51 PM    <DIR>          codebase
27-Jun-2016  05:34 PM    <DIR>          docs
21-Jun-2016  11:12 AM    <DIR>          WMQ 7.5 JARS
18-May-2016  12:56 PM    <DIR>          TestValidation
17-Jun-2016  02:35 PM    <DIR>          java-doc-jms
17-May-2016  04:20 PM    <DIR>          sample-log
20-May-2016  03:28 PM    <DIR>          jms
26-May-2016  12:01 PM    <DIR>          repository
24-Jun-2016  12:09 PM    <DIR>          New folder
05-Apr-2016  04:55 PM    <DIR>          zips
04-May-2016  12:20 PM    <DIR>          PocJms
20-Apr-2016  12:58 PM               901 TestValidation.zip
22-Jun-2016  04:22 PM             7,739 team.xlsx
13-May-2016  09:19 PM             8,700 sample-log.zip
04-Jun-2016  03:06 PM            43,410 Sequence diagrams.mdj
28-Jun-2016  11:22 AM            59,392 FW Binding file for DEV QM.msg
02-May-2016  08:04 PM            81,568 PocJms.zip
21-Mar-2013  01:33 PM            99,926 fscontext-4.2.jar--
22-Jun-2016  02:31 PM           236,631 java-doc-jms.zip
05-May-2016  05:19 PM         7,673,675 WMQ 7.5 JARS.zip
05-May-2016  05:19 PM        12,442,322 WMQ 8 JARS.zip
              15 File(s)     21,028,409 bytes
              19 Dir(s)  73,162,878,976 bytes free
dir /b /a-d /o:s
cmd /v /c "set zeropad=000,000,000,000,000,&for /f "tokens=4* delims= " %a in ('dir ^| find "/" ^| findstr /E /V /R "DIR^>[ ][ ]*\.\.$ DIR^>[ ][ ]*\.$"') do @set bytes=!zeropad!000&(if "%a" EQU "^<DIR^>" (for /f "tokens=3" %c in ('dir /s "%b" 2^>NUL ^| find "File(s)"') do @set bytes=%c)) & (if "%a" NEQ "^<DIR^>" (set bytes=%a)) & (for /f "tokens=1* delims=," %d in ('echo !bytes!') do @set bytes=%d&@set bytes=000!bytes!&@set bytes=!bytes:~-3!& @set bytes=!zeropad!!bytes!&if "%e" NEQ "" set bytes=!bytes!,%e)& echo !bytes:~-23! %b" | sort /R