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