批处理if语句,比较数值大小

代码要实现的功能如下:显示当前目录及子目录的磁盘占用,并打印所有占用大于100M的文件夹自己写的代码如下:@echooffecho正在计算当前目录磁盘占用……echo==... 代码要实现的功能如下:
显示当前目录及子目录的磁盘占用,并打印所有占用大于100M的文件夹
自己写的代码如下:

@echo off
echo 正在计算当前目录磁盘占用……
echo ===========================
for /f "tokens=3,4" %%i in ('dir ^| findstr /i "File( 个文件"') do echo 当前目录%~dp0 磁盘占用:%%i%%j
echo ===========================
for /f "delims=]" %%k in ('dir /ad /b /s') do (
for /f "tokens=3,4" %%l in ('dir "%%k"^| findstr /i "file 个文件"') do (
if %%l gtr 102400000 echo 磁盘占用大于100M的目录有:%%k,大小为%%l%%m
)
)
pause

但是运行结果是全部输出,似乎if语句的判断似乎没有生效,请大神帮忙解释一下,谢谢!
展开
 我来答
依梦琴瑶
高粉答主

2015-06-24 · 说的都是干货,快来关注
知道顶级答主
回答量:6.9万
采纳率:82%
帮助的人:1.7亿
展开全部
获取到的字节数超过三位数,每三位就会用逗号隔开,这就不是纯数字了
所以最终得到的%%l值无法和你给定的值相比较。
比如你得到的值为89,357,876
if 89,357,876 gtr 102400000能正常比较吗?
所以你要先想法把值中的逗号给去除喽,才行。
追问
你说的对,豁然开朗,感谢。

顺便问一下,有没有什么好的办法去除获取到的值中间的逗号?
追答
set zj=%%l
if !zj:,=! gtr 102400000

这样就能把逗号去除了,不过记得开启环境变量延迟哦,否则变量得不到结果的。

七鑫易维信息技术
2024-09-02 广告
Play Video 七鑫易维是致力于机器视觉和人工智能领域的高新科技企业,迄今已专注眼球追踪技术的研发、创新与应用超过14年,拥有完全自主知识产权,全球专利总量655余项。 作为眼球追踪技术领域的全球知名品牌,七鑫易维的产品体系覆盖眼动分... 点击进入详情页
本回答由七鑫易维信息技术提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式