[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
说实话,
没有看到哪里的教材是这样写的
楼主提及“几乎所有的批处理教材”
不知是否能够例举一二?
天的白色影子

TOP

那些垃圾教程只会误人子弟罢了

TOP

是批处理的变量延迟搞的鬼
喜欢折腾

TOP

哦!谢谢楼主,以后要注意了!

TOP

所以说,微软在这方面做得很乱,两个标准……
for /f "delims=" %%a in ('%0') do (echo %%a)

TOP

特性如此~
  1. If you use any of the logical or modulus operators, you will need to
  2. enclose the expression string in quotes.  Any non-numeric strings in the
  3. expression are treated as environment variable names whose values are
  4. converted to numbers before using them.  If an environment variable name
  5. is specified but is not defined in the current environment, then a value
  6. of zero is used.  This allows you to do arithmetic with environment
  7. variable values without having to type all those % signs to get their
  8. values.
复制代码
This allows you to do arithmetic with environment
variable values without having to type all those % signs to get their
values.
set /a a=%a%+1实际执行的是set /a a=+1而不是set /a a=0+1
set /a a=a+1 才是set /a a=0+1,但在for中它是会实时改变的。
心绪平和,眼藏静谧。

TOP

通常的讲,set /a a+=1正确的应该是set /a a=a+1而不是set /a a=%a%+1

实际上for这五次set /a a=%a%+1的变量设置都被延迟了

但是set /a a=a+1是set /a的一个特性,设置的变量会立即生效

所以set /a a+=1就结果来看,是立即生效的,对应的应该是set /a a=a+1

的确不关set的事,关教材资料的事

TOP

预处理的关系吧,与 set 无关。

set a=0
for /l %%b in (1,1,5) do set /a a=%a%+1

当读取以上整个 for 语句后,执行语句前进行了预处理,最后实际执行的是:

for /l %%b in (1,1,5) do set /a a=0+1

[ 本帖最后由 tireless 于 2009-1-17 18:35 编辑 ]
1

评分人数

TOP

返回列表