![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-17 04:16 |
共 47,813 主题排行 / 349,903 发帖 / 今日 0 篇 / 48,259 会员排行 |
| DOS疑难解答 & 问题讨论 (解答室) » 求助一个小问题 |
| 可打印版本 551 / 7 |
| 第1楼 chenhui530 | 发表于 2005-01-20 00:00 |
| 高级用户 发帖 273 积分 772 | |
|
求助一个小问题 请问在DOS下怎么判断一个文件中的内容为空啊
|
|
| 第2楼 红粟 | 发表于 2005-01-21 00:00 |
| 初级用户 发帖 8 积分 130 | |
|
你是想查看文件是否为空,还是在程序中实现?前者可以 Dir 命令查看文件列表,0字节的就是空.后者可以先重置文件指针,再通过eof(f)=true实现
|
|
| 第3楼 JonePeng | 发表于 2005-01-21 00:00 |
| 金牌会员 发帖 1,883 积分 4,562 来自 广东广州 | |
|
我用Dir查看文件列表时发现空内容的文件的大小显示为0,而且“0”的左右都有空白,利用此特点,用两条命令就可做到:
dir xxxx.xxx | find " 0 " >nul if errorlevel 0 echo xxxx.xxx is empty. 还可以做一个批处理以便判断:
将此批处理命名为empty.bat,运行empty xxx.xxx即可看到结果。 |
|
| 第4楼 Climbing | 发表于 2005-01-22 00:00 |
| 铂金会员 发帖 2,753 积分 6,962 来自 河北保定 | |
|
楼上的批处理是有错误的。第一,errorlevel的值要先判断是不是1。
第二,这个批处理不能用于NT环境。原因如下: D:\>dir test.emp | find " 0 " 2005-01-22 16:00 0 test.emp 1 个文件 0 字节 0 个目录 7,269,179,392 可用字节@echo off if not exist %1 goto none dir %1 | find " 0 " >nul if errorlevel 1 goto end echo %1 is empty. goto end :none echo %1 not found! goto end :end在NT环境下,批处理可以改成: @echo off if not exist %1 goto none dir %1 | find /i " 0 %1" >nul if errorlevel 1 goto end echo %1 is empty. goto end :none echo %1 not found! goto end :end |
|
| 第5楼 JonePeng | 发表于 2005-01-22 00:00 |
| 金牌会员 发帖 1,883 积分 4,562 来自 广东广州 | |
|
呵呵,我是在Win98下写那个批处理的,还没试过在NT环境下调试。谢谢Climbing的指正!
另外在Win9x和DOS下还有小小不完善之处:dir显示列表的末尾可能会显示“ 0 dir(s)”,“0”和“dir”之间有一个空格,那么要判断的文件不管是否0字节还是根本不存在,FIND可能因为找到“ 0 dir(s)”而返回1。所以FIND那一句应把“ 0 ”增加两个空格:“ 0 ”。
|
|
| 第6楼 chenhui530 | 发表于 2005-01-24 00:00 |
| 高级用户 发帖 273 积分 772 | |
|
谢谢大家的帮助!!
|
|
| 第7楼 chenhui530 | 发表于 2005-01-24 00:00 |
| 高级用户 发帖 273 积分 772 | |
|
怎么我试了不管是文件为不为空都显示XXX is empty.啊
|
|
| 第8楼 JonePeng | 发表于 2005-01-25 00:00 |
| 金牌会员 发帖 1,883 积分 4,562 来自 广东广州 | |
以下是引用chenhui530在2005-1-24 13:53:37的发言: 从我的调试结果和你的问题来看,应该是Find这个命令返回值的问题。 也许楼主是在MSDOS 7.1或者Win2000/XP下运行的吧。我觉得新版本的FIND.COM的返回值有些问题,不管“找到”还是“没找到”,它都返回0,以致批处理中判断错误,总显示“XXX is empty.”但是Win98的FIND.EXE(其版本以及日期都比MSDOS 7.1的FIND.COM要低)则根据找到的结果返回不同值:找到则返回0,否则返回1。虽然它的功能不及新版本的强,但我建议楼主试试用Win98的FIND.EXE取代FIND.COM。 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |