中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如果判断一个文件内容是否为空?
« [1] [2] »
作者:
标题: 如果判断一个文件内容是否为空? 上一主题 | 下一主题
leton
初级用户





积分 170
发帖 72
注册 2007-3-11
状态 离线
『楼 主』:  如果判断一个文件内容是否为空?

请教,如果判断一个文件内容是否为空?

2007-4-12 22:39
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 2 楼』:  

for %a in (test.txt) do @if "%~za"=="0" echo 此文件内容为空

2007-4-12 23:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ansipeter
中级用户

替身



积分 269
发帖 130
注册 2007-3-23
状态 离线
『第 3 楼』:  

我觉得楼主所说的为空不一定是文件大小为0,为空和大小为零是两个概念

2007-4-12 23:23
查看资料  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 4 楼』:  

findstr . test.txt >nul 2>nul && (echo 此文件内容不为空)

2007-4-12 23:29
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 5 楼』:  

我知道;我并没有混淆这两个概念;只是用为零来表示空文件;
也有过顾虑比如很多空格的文件大小也不为0;
for %a in (test.txt) do @if "%~za"=="0"
for /f %a in (test.txt) do @if "%a"==""

这两句代表了两种情况;

2007-4-12 23:30
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
leton
初级用户





积分 170
发帖 72
注册 2007-3-11
状态 离线
『第 6 楼』:  

谢谢楼上哥们了.

考虑得真具体.

这个帖子主要是为了解决停电问题。

企业内部有几台服务器,都有UPS(但没外加电源),管理员只有一个,为了避免断电当机情况(停电+UPS电影耗尽),想写个批处理让服务器每天 8:30-21:00 此段时间内进行判断:

1.判断时间是否 8:30-21:00;
1.1 是,往下执行
1.2 否,退出

2.Ping 客户端在线 有就记录(Find | ** >> Power.txt)

3.然后判断 Power.txt 是否为空
3.1 为空则对所有服务器发送关机指令
3.2 为有则(copy nul power.txt)然后倒数5分钟,再继续执行

思路基本这样

2007-4-13 00:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
htysm
高级用户




积分 866
发帖 415
注册 2005-12-4
状态 离线
『第 7 楼』:  

亏楼主想得到。

2007-4-13 00:33
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 8 楼』:  

文件内容为空??

我有三个理解:

  Quote:
1、文件大小为0;
2、文件内容都是ASCII为00H的字符;
3、文件内容为其它不可见字符;



2007-4-13 00:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
leton
初级用户





积分 170
发帖 72
注册 2007-3-11
状态 离线
『第 9 楼』:  

字节为0

2007-4-13 01:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
leton
初级用户





积分 170
发帖 72
注册 2007-3-11
状态 离线
『第 10 楼』:  

『第 7 楼』:  

亏楼主想得到。  


没钱就这样,哈

2007-4-13 01:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 11 楼』:  

如果是字节为零的情况,用2楼的就可以啦。

2007-4-13 01:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
leton
初级用户





积分 170
发帖 72
注册 2007-3-11
状态 离线
『第 12 楼』:  

谢谢指教

2007-4-13 10:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lililulula
中级用户





积分 302
发帖 138
注册 2007-3-29
状态 离线
『第 13 楼』:  

嘿嘿 我也要用到拉 偷学一下~~~~

[ Last edited by lililulula on 2007-4-20 at 03:55 PM ]

2007-4-14 05:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lililulula
中级用户





积分 302
发帖 138
注册 2007-3-29
状态 离线
『第 14 楼』:  

搞懂了 这里编辑掉~~~

[ Last edited by lililulula on 2007-4-20 at 03:55 PM ]

2007-4-14 05:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
leton
初级用户





积分 170
发帖 72
注册 2007-3-11
状态 离线
『第 15 楼』:  

终于有空继续了.....最近忙死了,那位兄弟看完麻烦指点一下,让代码更合理,简短,强大;谢谢

@echo off

:Begin
copy nul power.txt
copy nul server.txt
Set time=""
for /f "tokens=1 delims=; " %%a in ('time /t') do Set time=%%a
If %time% LSS 18:00 ( goto go ) else ( exit )

:go
for /L %%A in (1,10,60) do ping -n 1 -l 16 -w 100 192.168.200.%%A | find "Reply" >> power.txt
for %%C in (power.txt) do @if "%%~za"=="0" goto shutdown
goto time

:time
timeout 180
goto begin

:shutdown
for /L %%B in (1,1,10) do ping -n 1 -l 16 -w 100 192.168.200.%%B | find "Reply" >> server.txt
for /F " tokens=12,3 delims=: " %%B in (server.txt) do call shutdown -m \\%%B -f -s -t 120
goto end

:end

2007-4-20 12:20
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: