[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

个人理解

个人觉得,楼主的上面代码
  1. set num=
  2. set num=%num%
复制代码
其实没必要写那么多。而且里面的有多余,其实只需输入66个就行了,而且还可以换一种形式来表达,看看下面的个人改进的代码
  1. @echo off&goto loop
  2. shift 命令详解
  3. shift 是将所有参数往前移动一位。
  4. shift /2 是从第2个参数开始将后面的参数全部往前移动一位,但不影响前面的参数位置(即:不影响1)
  5. shift /3 是从第3个参数开始将后面的参数全部往前移动一位,但不影响前面的参数位置(即:不影响1,2)
  6. 依次类推 …… ……
  7. :loop
  8. @echo off&echo\
  9. echo 没移位的参数为 : 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20
  10. echo\&echo 参数 1234 始终没有变化,但后面的却在逐位变化,前移。
  11. echo\
  12. :: 作者:随风   @bbs.bathome.net   2007-11-10
  13. ::
  14. call :lis 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20
  15. :1
  16. color 0b
  17. echo\&echo 测试完毕,按任意键退出 ……
  18. echo\&pause>nul&exit
  19. :lis
  20. if "%5"==""  goto 1
  21. shift /5
  22. set /p=移位后的参数为 : %1 %2 %3 %4 %5 %6 %7 %8 %9<nul
  23. set /p=     按任意键继续......<nul
  24. for /l %%i in (1,1,66) do (
  25. set /p aa=<nul
  26. )
  27. pause>nul
  28. goto lis
复制代码
细心的朋友可能还看出了我把goto:eof也改了,这是为了方便新手朋友们阅读,说实在的我到现在还没明白源代码里的goto:eof是怎么转到
  1. color 0b
  2. echo\&echo 测试完毕,按任意键退出 ……
  3. echo\&pause>nul&exit
复制代码
其中的
for /l %%i in (1,1,66) do (
set /p aa=<nul
::输出66个退格符,使光标移到该行的最左面。注意:是退格符(在txt中显示为一个实心的黑方块)。
::一个退格符的作用就是使得窗口中的光标往前退一格。

ps:这几天又仔细拜读了前辈们的大作,终于明白了goto:eof是怎么转到
  1. color 0b
  2. echo\&echo 测试完毕,按任意键退出 ……
  3. echo\&pause>nul&exit
复制代码


原来goto:eof如果在call后的子程序中,当命令执行到goto:eof时,则表示结束该子程序,回到父程序中,于是接下来变执行call后面的
  1. color 0b
  2. echo\&echo 测试完毕,按任意键退出 ……
  3. echo\&pause>nul&exit
复制代码


如果新手朋友们不怎么明白什么子程序、父程序,那么更通俗的说法(个人观点),当程序执行到goto:eof时,会自动忽视下面的代码,也就是把该命令当做结尾,同时由于上面有call命令,于是就返回到call命令下面执行了。



这时才发现前几天自己擅自修改大大那处的代码,汗……啊,为了纪念刚开始的无知,就不改回了。


相信和我一样的新手朋友们看了后会对楼主的意思有所理解的。

[ 本帖最后由 xushaolong2009 于 2009-4-18 09:54 编辑 ]
1

评分人数

TOP

返回列表