个人觉得,楼主的上面代码复制代码 其实没必要写那么多。而且里面的有多余,其实只需输入66个就行了,而且还可以换一种形式来表达,看看下面的个人改进的代码- @echo off&goto loop
- shift 命令详解
- shift 是将所有参数往前移动一位。
- shift /2 是从第2个参数开始将后面的参数全部往前移动一位,但不影响前面的参数位置(即:不影响1)
- shift /3 是从第3个参数开始将后面的参数全部往前移动一位,但不影响前面的参数位置(即:不影响1,2)
- 依次类推 …… ……
- :loop
- @echo off&echo\
- echo 没移位的参数为 : 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20
- echo\&echo 参数 1234 始终没有变化,但后面的却在逐位变化,前移。
- echo\
- :: 作者:随风 @bbs.bathome.net 2007-11-10
- ::
- call :lis 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20
- :1
- color 0b
- echo\&echo 测试完毕,按任意键退出 ……
- echo\&pause>nul&exit
- :lis
- if "%5"=="" goto 1
- shift /5
- set /p=移位后的参数为 : %1 %2 %3 %4 %5 %6 %7 %8 %9<nul
- set /p= 按任意键继续......<nul
- for /l %%i in (1,1,66) do (
- set /p aa=<nul
- )
- pause>nul
- goto lis
复制代码 细心的朋友可能还看出了我把goto:eof也改了,这是为了方便新手朋友们阅读,说实在的我到现在还没明白源代码里的goto:eof是怎么转到- color 0b
- echo\&echo 测试完毕,按任意键退出 ……
- echo\&pause>nul&exit
复制代码 其中的
for /l %%i in (1,1,66) do (
set /p aa=<nul
::输出66个退格符,使光标移到该行的最左面。注意:是退格符(在txt中显示为一个实心的黑方块)。
::一个退格符的作用就是使得窗口中的光标往前退一格。
ps:这几天又仔细拜读了前辈们的大作,终于明白了goto:eof是怎么转到- color 0b
- echo\&echo 测试完毕,按任意键退出 ……
- echo\&pause>nul&exit
复制代码
原来goto:eof如果在call后的子程序中,当命令执行到goto:eof时,则表示结束该子程序,回到父程序中,于是接下来变执行call后面的- color 0b
- echo\&echo 测试完毕,按任意键退出 ……
- echo\&pause>nul&exit
复制代码
如果新手朋友们不怎么明白什么子程序、父程序,那么更通俗的说法(个人观点),当程序执行到goto:eof时,会自动忽视下面的代码,也就是把该命令当做结尾,同时由于上面有call命令,于是就返回到call命令下面执行了。
这时才发现前几天自己擅自修改大大那处的代码,汗……啊,为了纪念刚开始的无知,就不改回了。
相信和我一样的新手朋友们看了后会对楼主的意思有所理解的。
[ 本帖最后由 xushaolong2009 于 2009-4-18 09:54 编辑 ] |