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

用批处理搜索系统盘,从大到小,依次列出最大的10个文件.以下是闲话.经常听到朋友说系统盘没空间了,所以老早就想写这个东西,但很不才,一直不知道从何入手.初来百度知道,求高... 用批处理搜索系统盘,从大到小,依次列出最大的10个文件.

以下是闲话.
经常听到朋友说系统盘没空间了,所以老早就想写这个东西,但很不才,一直不知道从何入手.初来百度知道,求高手给写一批处理,或者间接给我点思路,解决困惑,我也稍懂一点点点编程,感觉这好像还涉及点算法啥的,看似简单,实则不然.为了方便移植,请您最好不要用到"外部命令",分数不高,但我以真诚的心期待这一答案, 祝大家元旦快乐.谢谢
好强大,只是这个图片中为什么找不到exe文件啊.谢谢
展开
 我来答
百度网友8e0c3fe
2010-01-01 · TA获得超过1169个赞
知道小有建树答主
回答量:688
采纳率:0%
帮助的人:624万
展开全部

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

但是写好后却受到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快很多.

pwdprotected
2010-01-01 · TA获得超过2050个赞
知道大有可为答主
回答量:1527
采纳率:0%
帮助的人:1568万
展开全部
好像有个叫disksum.exe的外部命令能满足你要求,自己搜索下就知道了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友426f3d8c
2010-01-01 · TA获得超过193个赞
知道小有建树答主
回答量:260
采纳率:100%
帮助的人:133万
展开全部

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

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

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
奥泼提迷死题客
2010-01-01 · TA获得超过3429个赞
知道大有可为答主
回答量:1627
采纳率:0%
帮助的人:2341万
展开全部
@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
从大到小 记录了系统盘所有文件大小
格式为:
文件大小,文件目录

到给你整理在文本里了,想怎么处理都可以咯。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2010-01-01
展开全部
图片中的多余内容被可能被过滤掉了,换一幅.
http://hi.baidu.com/hongsedaima/album/item/3e9224247c6f18028644f956.html
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式