百度知道批处理高手,求一Bat批处理高级算法,查找最大10个文件.

用批处理搜索系统盘,从大到小,依次列出最大的10个文件.

以下是闲话.
经常听到朋友说系统盘没空间了,所以老早就想写这个东西,但很不才,一直不知道从何入手.初来百度知道,求高手给写一批处理,或者间接给我点思路,解决困惑,我也稍懂一点点点编程,感觉这好像还涉及点算法啥的,看似简单,实则不然.为了方便移植,请您最好不要用到"外部命令",分数不高,但我以真诚的心期待这一答案, 祝大家元旦快乐.谢谢
好强大,只是这个图片中为什么找不到exe文件啊.谢谢
最新回答
猫小柒

2026-07-10 22:40:25

算法类似于对一组指定的数字从大到小进行排序.

但是写好后却受到bat的种种制约,如set的限制无法计算2^31以上的数字(2G以上),延迟环境变量造成语句混乱,for命令先天的不足....所以先用bat写好,又用autohotkey脚本重新打包了下.以备后患.

-----------

批处理脚本 

@echo off

SETLOCAL ENABLEDELAYEDEXPANSION

set /a Num=10

set SearchPath=%windir:~0,2%

for /l %%i in (1,1,%Num%) do (

          set /a MaxSize[%%i]=0

          set /a MaxFile[%%i]=NULL

)

for /f "delims=" %%j in ('dir %SearchPath% /a-d /b /s ') do (

          cls&echo 当前路径:%%~pj

          set /a CurrFileSize=%%~zj

          set /a error=2

          for /l %%k in (1,1,%Num%) do (

                    if !error!==2 (

                              If !CurrFileSize! GTR !MaxSize[%%k]! (

                                   set LastMax=%Num%

                                   set /a CurrMax=%Num%-1

                                   set /a index=%Num%-%%k

                                   for /l  %%k in (1,1,!index!) do (

                                             set /a MaxSize[!LastMax!]=MaxSize[!CurrMax!]

                                             call set MaxFile[%%LastMax%%]=%%MaxFile[!CurrMax!]%%

                                             set /a LastMax-=1

                                             set /a CurrMax-=1

                                   )

                                   set /a MaxSize[%%k]=!CurrFileSize!

                                   set MaxFile[%%k]=%%~j

                                   set /a error=1

                              )

                    )

          )

)

cls&for /l %%l in (1,1,%Num%) do (

               echo %%l. 文件: !MaxFile[%%l]!  大小: !MaxSize[%%l]! 字节

)

echo OK&pause>Nul

--------------------------

autohotkey脚本

代码太长暂不给出了.

如果需要,保存下面图片,选择用winrar打开,就可以看到打包后的单个exe文件了,拖出来执行,执行效率相对bat快很多.

不眠之夜

2026-07-11 21:29:05

好像有个叫disksum.exe的外部命令能满足你要求,自己搜索下就知道了
天神风之恋

2026-06-22 23:01:14

如果是XP的话,使用文件搜索功能,范围设置为*.*即查询所有文件,从全部硬盘开始查找,如果想快一点可以指定个大小范围(比如1G以上)。

待查询出来以后,按[大小]列排一下序就可以了。

乖我要你平安

2026-01-26 11:34:12

@echo off& mode con cols=50 lines=10& color 17& echo 正在搜索...请不要关闭窗口...
for /f "delims=" %%1 in ('dir /s /b /a:-d %systemdrive%\')do (cls& set wind=0000000000%%~z1
set /a wind_F+=1&& call echo 共计统计文件%%wind_F%%个&call echo %%wind:~-10%%,%%1>>smile.txt)
sort /r<smile.txt>snow.txt& erase smile.txt

snow.txt
从大到小 记录了系统盘所有文件大小
格式为:
文件大小,文件目录

到给你整理在文本里了,想怎么处理都可以咯。
不眠之夜

2026-05-27 23:14:52

图片中的多余内容被可能被过滤掉了,换一幅.
http://hi.baidu.com/hongsedaima/album/item/3e9224247c6f18028644f956.html