![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-25 22:39 |
共 47,812 主题排行 / 349,910 发帖 / 今日 0 篇 / 48,264 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 如何判断目录是否为空? |
| 可打印版本 5,814 / 14 |
| 第1楼 square007 | 发表于 2006-07-20 15:24 |
| 初级用户 发帖 7 积分 26 | |
|
如何判断目录是否为空? 请问怎样判断目录是否为空呢?我写的批处理无论是否为空都显示存在文件,错在哪里?
@ECHO OFF IF EXIST D:\UP\*.* ( ECHO 存在文件 ) ELSE ( ECHO 不存在文件 ) PAUSE |
|
| 第2楼 namejm | 发表于 2006-07-20 16:13 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
这是因为任何一个文件夹下,都回存在.和..这两个目录,所以导致判断的失败。
下面的代码应该能满足你的要求: |
|
| 第3楼 bagpipe | 发表于 2006-07-20 16:37 |
| 银牌会员 发帖 425 积分 1,144 来自 北京 | |
|
我也发一个玩玩
@echo off setlocal set /p k=要测试的文件夹路径: if not exist "%k%\." echo 此文件夹不存在&&goto :eof for /f "tokens=1 delims=个目录" %%a in ('dir /a "%k%"^|findstr "个目录"') do set a=%%a for /f "tokens=1 delims=个文件" %%b in ('dir /a "%k%"^|findstr "个文件"') do set b=%%b if "%b: =%"=="0" if "%a: =%"=="2" echo 此文件夹为空&&goto :eof echo 此文件夹不为空或者存在空文件夹 |
|
| 第4楼 zh159 | 发表于 2006-07-20 17:28 |
| 金牌会员 发帖 1,467 积分 3,687 | |
|
简化一下 bagpipe 的:
@echo off 执行:批处理 要测试的文件夹路径(空格隔开) [ Last edited by zxcv on 2006-7-20 at 17:43 ] |
|
| 第5楼 bagpipe | 发表于 2006-07-20 17:30 |
| 银牌会员 发帖 425 积分 1,144 来自 北京 | |
|
我的妈呀,这也叫简化
|
|
| 第6楼 zh159 | 发表于 2006-07-20 17:33 |
| 金牌会员 发帖 1,467 积分 3,687 | |
Originally posted by bagpipe at 2006-7-20 17:30: 简化一行再减几个字 ![]() 再来一次:
![]() [ Last edited by zxcv on 2006-7-20 at 17:42 ] |
|
| 第7楼 namejm | 发表于 2006-07-22 11:01 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
我来个更简洁的:
[ Last edited by namejm on 2006-7-22 at 13:31 ] |
|
| 第8楼 bagpipe | 发表于 2006-07-22 11:16 |
| 银牌会员 发帖 425 积分 1,144 来自 北京 | |
|
哦,确实是这样,不过没有DELIMS= 也应该可以,因为FOR是以空格为默认分隔符号的,是我晕菜了...........
[ Last edited by bagpipe on 2006-7-22 at 16:03 ] |
|
| 第9楼 zh159 | 发表于 2006-07-22 15:11 |
| 金牌会员 发帖 1,467 积分 3,687 | |
Originally posted by bagpipe at 2006-7-22 11:16: 关键是“delims= ”一句(=号后面是空格),会自动清除你这句: for /f "tokens=1 delims=个目录" %%a in ('dir /a "%k%"^|findstr "个目录"') do set a=%%a 获取的2之前的所有空格,只剩下2,所以用不着"%b: =%"去除空格 不信的话你可以试试我的:D [ Last edited by zxcv on 2006-7-22 at 15:16 ] |
|
| 第10楼 square007 | 发表于 2006-07-25 10:25 |
| 初级用户 发帖 7 积分 26 | |
|
哇,真是高手如云阿,长见识拉。
|
|
| 第11楼 square007 | 发表于 2006-07-25 10:30 |
| 初级用户 发帖 7 积分 26 | |
|
@echo off
dir /a /b "要查找的文件夹"|findstr .>nul 2>nul && echo 有文件 || echo 没有文件 这个东西看不懂,那位给解释一下呢? |
|
| 第12楼 xycoordinate | 发表于 2007-03-07 23:12 |
| 中级用户 发帖 228 积分 493 来自 安徽 | |
|
(dir /a /b "要查找的文件夹"|findstr .>nul 2>nul )&&( echo 有文件 || echo 没有文件)
|:管道 .:findstr中的特殊字符,代表所有字符,详见findstr /? &&:A&&B,A成功,执行B ||:A||B,A不成功,执行B |
|
| 第13楼 ruisoft | 发表于 2007-03-20 08:06 |
| 初级用户 发帖 57 积分 93 | |
|
findstr .>nul 2>nul
中的>nul 2>nul 的解释? |
|
| 第14楼 lxmxn | 发表于 2007-03-20 23:27 |
| 版主 发帖 4,938 积分 11,386 | |
Originally posted by ruisoft at 2007-3-19 19:06: 简单的讲就是屏蔽屏幕的输出。如果想看具体的讲解,可以在搜索一下 willsort 的讲解。 |
|
| 第15楼 abc999111 | 发表于 2007-03-21 03:37 |
| 新手上路 发帖 1 积分 4 | |
|
exit |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |