中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-03 04:31
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何用for判断文档内容是否为空 查看 1,075 回复 8
楼 主 如何用for判断文档内容是否为空 发表于 2006-12-22 18:42 ·  中国 湖南 长沙 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
如何用for判断文档内容是否为空,
要求:用for判断a.txt中是否为空,如果是空的,则运行dir f:\如果有内容则跳转到另一标签
.


[ Last edited by 26933062 on 2006-12-22 at 05:46 AM ]
2 发表于 2006-12-22 19:30 ·  中国 福建 厦门 电信
初级用户
积分 68
发帖 36
注册 2006-12-20 15:31
19年会员
UID 74057
性别 男
状态 离线
for %%i in (1.txt) do if "%%~zi"=="0" (goto 1) else (goto 2)
3 发表于 2006-12-22 22:27 ·  中国 湖南 长沙 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
原来这么简单,谢谢了,又学了东西.
4 发表于 2007-01-22 01:17 ·  中国 江苏 苏州 电信
新手上路
积分 13
发帖 7
注册 2006-01-06 15:46
20年会员
UID 48517
性别 男
状态 离线
"%%~zi"=="0"

这句话如何理解?

下面我用2楼的命令写的bat,可达不到目的(del 1.txt):
@echo off
for %%a in (f.txt) do if "%%~za"=="0" (goto del) else (goto pause)

:del
del %%a
goto :eof

:pause
pause


f.txt内容如下:
1.txt

1.txt为空。


不知以上错在哪里??
请帮忙解答!谢谢。
5 发表于 2007-01-22 02:51 ·  中国 广西 玉林 博白县 电信
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
20年会员
UID 44210
状态 离线
%%a只能在for本语句循环里有效
6 发表于 2007-01-22 04:10 ·  中国 广东 广州 天河区 电信
高级用户
★★★
潜水修练批处理
积分 788
发帖 366
注册 2006-12-31 02:43
19年会员
UID 75048
性别 男
状态 离线
Originally posted by willhellen at 2007-1-21 12:17 PM:
"%%~zi"=="0"

这句话如何理解?

下面我用2楼的命令写的bat,可达不到目的(del 1.txt):
@echo off
for %%a in (f.txt) do if "%%~za"==&qu ...



如果想用那个格式就改为下面的那个


@echo off
for %%a in (f.txt) do if "%%~za"=="0" (call :del %%a) else (call :pause)
goto :eof

:del
del %1
goto :eof

:pause
pause
7 发表于 2007-01-22 05:05 ·  中国 广东 广州 天河区 电信
初级用户
积分 99
发帖 43
注册 2007-01-12 23:05
19年会员
UID 76317
性别 男
状态 离线
Originally posted by willhellen at 2007-1-21 12:17 PM:
"%%~zi"=="0"

这句话如何理解?

下面我用2楼的命令写的bat,可达不到目的(del 1.txt):
@echo off
for %%a in (f.txt) do if "%%~za"==&qu ...

我认为应该这样写:
@echo off
for %%a in (%1) do if "%%~za"=="0" (goto del) else (goto pause)

:del
del %1
goto :eof

:pause
pause


运行时把f.txt赋给%1
我也不明白"%%~zi"=="0"是什么意思,希望有人能解释一下。。。
8 发表于 2007-01-24 12:47 ·  中国 广东 广州 电信
初级用户
积分 24
发帖 14
注册 2006-10-08 01:22
19年会员
UID 64863
状态 离线
%~zi是表示文件的大小,如何大小等于0即为空文件.
还有一些其它的参数,比方:%~n表示文件名,%~f表示完全路径等.
9 发表于 2007-01-24 12:58 ·  中国 广西 玉林 博白县 电信
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
20年会员
UID 44210
状态 离线
@echo off
for %%a in (%1) do if "%%~za"=="0" (del %1) else pause
goto :eof
论坛跳转: