[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
这个批处理名字有要求:"C.BAT"
  1. @SET/aA+=1,B+=A
  2. @IF %A%==100 ECHO,%B%&PAUSE>NUL&EXIT
  3. @C
复制代码
  1. (FOR /L %%C IN (0,1,99)DO @SET/aA+=1,B+=A)&SET B&PAUSE
复制代码
  1. @SET/aB=(1+100)*100/2&@SET B&PAUSE>NUL
复制代码
  1. @CMD/VON/C"(FOR /L %%C IN (0,1,99)DO SET/aA+=1,B+=A)>NUL&ECHO,!B!&PAUSE"
复制代码
如无特别说明,代码测试环境均为 XP SP3

TOP

参考了 Seter 的
http://bbs.bathome.net/redirect. ... d=465&pid=37670
  1. @SET/aA+=1,B+=A
  2. @%0%A:~2% 2>NUL
  3. @ECHO,%B%&PAUSE>NUL
复制代码
发现第二三行代码用&串起来还有递归效果
  1. @SET/aA+=1,B+=A
  2. @%0%A:~2% 2>NUL&@ECHO,%B%&PAUSE>NUL
复制代码
如无特别说明,代码测试环境均为 XP SP3

TOP

回复 9# cyy998


  1. @SET/aA+=1,B+=A
  2. @%0%A:~2% 2>NUL
  3. @ECHO,%B%&PAUSE>NUL
复制代码

因为没有使用 @ECHO OFF 关闭回显,所以代之使用每句前加 @ ,这个好理解

再有就是 一、三 句仔细拆分看也好理解
第一句相当于:
SET /a A+=1  //是 SET /a A=A+1 的简化写法,即累加或递加;下同
SET /a B+=1
第三句相当于:
ECHO %B%  //这个显示变量 B 的值,如果这个觉得难下面不用看了
PAUSE    //原句中 >NUL 把命令输出屏蔽了,下同(标记①

难一点的是第二句
去掉 @ 2>NUL 后剩下
%0%A:~2%
由红蓝两部分组成,红色 %0 表示批处理本身,蓝色 %A:~2% 取变量 A 的第3个及之后的字符
实际作用中 %0 没有变化。%A:~2% 因为之前第一句代码是在做累加运算,因此变量 A 处于变化之中;
当 A 在 1 到 99 之间,%A:~2% 是空值  //%0%A:~2% 相当于 %0,就是调用自身
当 A 等于 100 时,%A:~2% 值为 0  //%0%A:~2% 相当于 %00,实际上找不到这个程序因此出现错误(转而运行下一句,即第三句)。
                 //代码运行时看不到错误信息是因为(参看标记①)2>NUL
1

评分人数

    • batman: 美中仍有不足。。。PB + 15
如无特别说明,代码测试环境均为 XP SP3

TOP

本帖最后由 cutebe 于 2012-12-18 21:41 编辑

回复 14# 一马平川_陈


    参看第二句注释。因为第二句 %0 调用了自身(就是这个批处理本身)。相当于重复执行第一句。
  1. @SET/aA+=1,B+=A
  2. @ECHO,%B%
  3. @PAUSE>NUL
  4. @%0
复制代码
看以上代码,忽略 @ 符号,一二三行是顺序执行;执行到第四行时因为调用自身因此又执行第一行了。
把每行的 @ 删除再运行就看得出来了。
如无特别说明,代码测试环境均为 XP SP3

TOP

其实我7楼的代码字节数还是很少的
不过到这里也学到了个新知识
如无特别说明,代码测试环境均为 XP SP3

TOP

返回列表