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

管道方式的原理解释不够“正点”。是管道运行机制带来两次预处理造成的。
类似的
set var=1&for /f %%- in ('echo %%var%%') do echo %%-

建议可以把相关老帖集中到一起。
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

虽然 %%a%或者%%1 得到的还是for 变量的值,却还是要视为第三优先级
====================================
根据原理的话,这个不应该这么算。
其实是bat从左到右的处理方式决定的,前面的两个%%是百分号对自己转义得到%号本身,
再与后面的符号结合形成for的变量%a、%1

只要for()%a扩展的值中含有或和旁边的字符组合后含有:!var!,!var:n=m!,!var:~2,2! 等形式
就会再次进行!号变量的扩展
====================================
补充:
%1、%var%、%%a形式的变量展开后,不只是根据有没有感叹号对!!(!var!及其替换、截取形式),而是根据语句中是否存在!号,只要含有!号,就要再次处理。
对含!号语句的再次处理也会拖累^再次受到处分。


另外,call的效率还是要比管道、for /f 解析命令输出等方式的效率高多了,毕竟是内部命令。
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

set a=100
set b=a
set "c=^!b^!*2"
set/a c=%b%+10
代码中:%b% => !b!*2 => a*2 => 100*2 所以结果进行了以下运算:
======================================================
瞅着有点不对劲,笔误吧,第四行应该是%c%:set/a c=%c%+10
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

返回列表