中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-13 02:09
中国DOS联盟论坛 » DOS学习入门 & 精彩文章 (教学室) » [奇怪]这是怎么回事啊? 查看 838 回复 2
楼 主 [奇怪]这是怎么回事啊? 发表于 2007-10-06 12:27 ·  中国 黑龙江 哈尔滨 联通
初级用户
积分 64
发帖 27
注册 2007-10-03 11:01
18年会员
UID 98818
性别 男
状态 离线
当前目录有4个txt文件,1.txt 2.txt 3.txt 4.txt和一个批处理文件
a.bat:
@echo off
setlocal enabledelayedexpansion
for %%a in (*.txt) do (
echo %%a
set/a n=0
:ag
set/a n+=1
if not !n!==3 goto ag
)
pause

如果没有最后的if语句,会显示
1.txt
2.txt
3.txt
4.txt
为什么有这个if后,只显示
1.txt
呢?

这个if并没有改变for循环啊
2 发表于 2007-10-06 14:28 ·  中国 四川 南充 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
20年会员
UID 42843
性别 男
来自 四川南充
状态 离线
因为在一个语句体里不能有标号,有了也不能让语句体里的转向语句转向语句体里的标号.
3 发表于 2007-10-06 19:10 ·  中国 黑龙江 哈尔滨 联通
初级用户
积分 64
发帖 27
注册 2007-10-03 11:01
18年会员
UID 98818
性别 男
状态 离线

因为在一个语句体里不能有标号,有了也不能让语句体里的转向语句转向语句体里的标号.

楼上的不对,比如:
@echo off
setlocal enabledelayedexpansion
if 1==1 (
:ag
echo ok
set/a p+=1
if !p! lss 3 goto ag
)
pause

会显示3个OK

[ Last edited by ssyfzy on 2007-10-7 at 12:40 PM ]
论坛跳转: