Board logo

标题: [已结]shift命令如何在for循环中使用 [打印本页]

作者: blancy     时间: 2009-2-24 17:48    标题: [已结]shift命令如何在for循环中使用

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 ]
作者: bat-zw     时间: 2009-2-24 18:53

@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
)

作者: blancy     时间: 2009-2-24 19:10
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!!!
作者: 不得不爱     时间: 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 :eof
:END
echo OK!!!

[ Last edited by 不得不爱 on 2009-2-24 at 20:05 ]
作者: blancy     时间: 2009-2-25 10:51


  Quote:
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 ...

非常非常感谢两位的帮助
作者: jet     时间: 2009-3-3 08:12
引用:
------------------------------------------------------------------------------------
变量延迟引起结果不等于你的希望值,改成下面的就可以了!
@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个%?
作者: q385131731     时间: 2009-3-3 10:39
因为批处理下的变量要用%%n ,要比dos内多个%  , 格式规定要这样用
作者: 674116666     时间: 2009-4-8 09:08
格式规定要这样用

作者: faultcode     时间: 2009-6-12 05:58
格式规定? -_-!
尾随乞丐 嘿嘿...