![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-03 15:09 |
共 48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 请教:学习中的问题,set,if |
| 可打印版本 838 / 6 |
| 第1楼 qingfushuan | 发表于 2007-03-07 06:41 |
| 高级用户 发帖 327 积分 502 | |
|
请教:学习中的问题,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 ] |
|
| 第2楼 juventusryp | 发表于 2007-03-07 07:24 |
| 初级用户 发帖 40 积分 88 | |
|
当用DIR查询一个空文件夹时,显示的信息总共会是9行,至于第2个FOR用SET意思是当文件夹下有%%i这个文件就执行后面的SET语句使NUM自加1然后当SET小于8行的话就显示没有文件
|
|
| 第3楼 qingfushuan | 发表于 2007-03-07 07:32 |
| 高级用户 发帖 327 积分 502 | |
|
谢谢你的热心回复,领教了,感谢
|
|
| 第4楼 zhoushijay | 发表于 2007-03-07 07:49 |
| 高级用户 发帖 375 积分 845 | |
|
使用 dir /b 就不用这样了
|
|
| 第5楼 qingfushuan | 发表于 2007-03-07 08:24 |
| 高级用户 发帖 327 积分 502 | |
|
是第二个for中用dir /b吗?试试先,
|
|
| 第6楼 zhoushijay | 发表于 2007-03-07 09:16 |
| 高级用户 发帖 375 积分 845 | |
|
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 文件夹的路径自己改下,不计算子文件夹的个数的 |
|
| 第7楼 juventusryp | 发表于 2007-03-07 10:31 |
| 初级用户 发帖 40 积分 88 | |
|
@echo off
set flag= for /f %%i in ('dir /a /b "目标文件夹"') do set flag=1 if defined flag (echo 文件夹非空) else echo 这是个空文件夹 pause 给个NA斑竹写的 更简洁的 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |