中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-07-18 08:59
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]shift命令如何在for循环中使用 查看 987 回复 8
楼 主 [已结]shift命令如何在for循环中使用 发表于 2009-02-24 17:48 ·  中国 广东 深圳 电信
初级用户
积分 33
发帖 23
注册 2009-02-17 17:01
17年会员
UID 139095
性别 女
状态 离线
a.bat内容如下:
@echo off
CALL :AA 01 03 05
goto :END
:AA
For /L %%s IN (1,1,3) DO (
echo cc.c%1
shift /1
)

goto :eof
:END
echo OK!!!

运行结果:
cc.c01
cc.c01
cc.c01
OK!!!


请问如何得到
cc.c01
cc.c02
cc.c03
OK!!!

[ Last edited by blancy on 2009-2-25 at 10:53 ]
新手上路,请多关照
2 发表于 2009-02-24 18:53 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线

@echo off
call :lp 1 2 3 4 5 6 7 8 9
pause>nul&goto :eof
:lp
if "%1" neq "" (
echo %1
shift&goto lp
)
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
blancy +1 2009-02-25 10:51
批处理之家新域名:www.bathome.net
3 发表于 2009-02-24 19:10 ·  中国 广东 深圳 电信
初级用户
积分 33
发帖 23
注册 2009-02-17 17:01
17年会员
UID 139095
性别 女
状态 离线
to: 楼上,请问我这个程序错在哪呢?
@echo off
CALL :AA 01 03 05
goto :END
:AA
For /L %%s IN (1,1,3) DO (
echo cc.c%1
shift /1
)

goto :eof
:END
echo OK!!!
新手上路,请多关照
4 发表于 2009-02-24 20:03 ·  中国 四川 南充 营山县 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
20年会员
UID 42843
性别 男
来自 四川南充
状态 离线
变量延迟引起结果不等于你的希望值,改成下面的就可以了!
@echo off
CALL :AA 01 03 05
goto :END
:AA
For /L %%s IN (1,1,3) DO (
call echo cc.c%%1
shift /1
)

goto :eof
:END
echo OK!!!

[ Last edited by 不得不爱 on 2009-2-24 at 20:05 ]
本帖最近评分记录 (共 3 条) 点击查看详情
评分人分数时间
moniuming +5 2009-02-24 20:48
blancy +1 2009-02-25 10:49
jet +1 2009-03-03 05:14
5 发表于 2009-02-25 10:51 ·  中国 广东 深圳 电信
初级用户
积分 33
发帖 23
注册 2009-02-17 17:01
17年会员
UID 139095
性别 女
状态 离线
Originally posted by 不得不爱 at 2009-2-24 20:03:
变量延迟引起结果不等于你的希望值,改成下面的就可以了!
@echo off
CALL :AA 01 03 05
goto :END
:AA
For /L %%s IN (1,1,3) DO (
call echo cc.c%%1
shift /1
)

goto :eo ...

非常非常感谢两位的帮助
新手上路,请多关照
6 发表于 2009-03-03 08:12 ·  中国 江苏 苏州 电信
新手上路
积分 9
发帖 5
注册 2008-04-02 13:36
18年会员
UID 114742
性别 男
状态 离线
引用:
------------------------------------------------------------------------------------
变量延迟引起结果不等于你的希望值,改成下面的就可以了!
@echo off
CALL :AA 01 03 05
goto :END
:AA
For /L %%s IN (1,1,3) DO (
call echo cc.c%%1
shift /1
)

goto :eof
:END
echo OK!!!

-----------
其中的call echo cc.c%%1为什么是2个%?
7 发表于 2009-03-03 10:39 ·  中国 浙江 宁波 电信
初级用户
积分 39
发帖 23
注册 2009-02-05 21:38
17年会员
UID 138135
性别 男
状态 离线
因为批处理下的变量要用%%n ,要比dos内多个% , 格式规定要这样用
8 发表于 2009-04-08 09:08 ·  中国 浙江 温州 电信
社区乞丐
积分 -12
发帖 6
注册 2009-04-02 05:53
17年会员
UID 141886
性别 男
状态 离线
格式规定要这样用
9 发表于 2009-06-12 05:58 ·  中国 江苏 苏州 电信
初级用户
★★
积分 120
发帖 60
注册 2007-10-26 22:42
18年会员
UID 100889
性别 男
状态 离线
格式规定? -_-!
尾随乞丐 嘿嘿...
论坛跳转: