中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 请教:学习中的问题,set,if 上一主题 | 下一主题
qingfushuan
高级用户





积分 502
发帖 327
注册 2006-12-30
状态 离线
『楼 主』:  请教:学习中的问题,set,if

@echo off
:: 探测空文件夹
:: code by jm 2006-12-4
set num=0
setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /ad /b /s') do (
    for /f %%j in ('dir /a "%%i"') do set /a num+=1
    if !num! lss 8 echo "%%i" 下没有文件
    set num=0
)
pause

上面第二个for中为何要用set,累加后(set /a num+=1)为何又要归零(set num=0)
if在这又是什么意思呢!num!小于8就没文件了,%%j不是就没得意义罗,请教了

[ Last edited by qingfushuan on 2007-3-6 at 05:49 PM ]

2007-3-7 06:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
juventusryp
初级用户





积分 88
发帖 40
注册 2006-12-26
状态 离线
『第 2 楼』:  

当用DIR查询一个空文件夹时,显示的信息总共会是9行,至于第2个FOR用SET意思是当文件夹下有%%i这个文件就执行后面的SET语句使NUM自加1然后当SET小于8行的话就显示没有文件

2007-3-7 07:24
查看资料  发短消息 网志   编辑帖子  回复  引用回复
qingfushuan
高级用户





积分 502
发帖 327
注册 2006-12-30
状态 离线
『第 3 楼』:  

谢谢你的热心回复,领教了,感谢

2007-3-7 07:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zhoushijay
高级用户

Autowalk


积分 845
发帖 375
注册 2007-3-3
状态 离线
『第 4 楼』:  

使用 dir /b   就不用这样了

2007-3-7 07:49
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
qingfushuan
高级用户





积分 502
发帖 327
注册 2006-12-30
状态 离线
『第 5 楼』:  

是第二个for中用dir /b吗?试试先,

2007-3-7 08:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zhoushijay
高级用户

Autowalk


积分 845
发帖 375
注册 2007-3-3
状态 离线
『第 6 楼』:  

echo off
set num=0
for /f "delims=" %%i in ('dir /b /s /a-d e:\bat') do (for /f %%j in ('dir /b /a-d "%%i"') do set /a num+=1)
echo 此文件夹中有%num%个文件!
pause

文件夹的路径自己改下,不计算子文件夹的个数的

2007-3-7 09:16
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
juventusryp
初级用户





积分 88
发帖 40
注册 2006-12-26
状态 离线
『第 7 楼』:  

@echo off
set flag=
for /f %%i in ('dir /a /b "目标文件夹"') do set flag=1
if defined flag (echo 文件夹非空) else echo 这是个空文件夹
pause
给个NA斑竹写的 更简洁的

2007-3-7 10:31
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: