[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
我只道此贴是很精典,很好,对于我初学者来说很难懂,不过看到BATMANE对我们的鼓励,我会努力的

TOP

真是强贴,我有一段时间没来这了,发现落后了很多!学了一部分倒退了

TOP

re 8 楼
本来是作为说明文档的,是不能运行的,
不小心加[ code] 了。

TOP

看了第一遍,没看懂,本来不打算再研究的,看了batman的话,决定重新看看
看到第一段代码就卡壳了,这样的代码能运行吗?真是晕死聊
  1. 12a=###
  2. !a=$$
  3. a=aaa
  4. echo;%12a%
  5. 得到结果为:第一个参量+2a
  6. echo;%!a%!
  7. 得到结果为:$$
复制代码
我是一只小菜鸟,飞到东来飞到西……

TOP

谢谢指正,笔误,见笑了,一楼已经更正。

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

忍不住要说两句

        记得随风版主在一次交谈中提到:我们在日常对批处理的应用中,多是考虑其实用性其它的简洁度、效率倒放在了其次。的确是

如此,我们大家在平常利用批来解决实际问题时都是以最终解决问题为根本目的,只要问题解决了就万事ok了。很少会去想到自己

的代码是不是还可以减减肥提提效,这是很正常的,我想也不用为此而自责,毕竟你的批再复杂再慢也比你手动去处理高效了很多。

    大家都可以回忆下自己刚接触批时写出的第一个批处理是怎么样的,是不是现在看起来是那么的稚嫩,而现在你是不是再也不

会写这样的代码来了?而这一切又说明了什么?我认为这说明你得到提高了,很显然这种提高与你平常对批的不懈学习和领悟是分不

开的。虽然为了解决实际问题,你还在写着拖沓冗余的代码,虽然你一次一次在高手们简练高效的代码前惊叹,虽然你总感觉自己还

是个批中新手,但请你相信,我的朋友,只要你坚持并努力下去,你就会得到不断的提高。当有一天,你站在了新的高度再回望自己

所走过的学习历程,你会发现这会是人生一笔不可多得的财富, 同时,你也会感觉到学习所带给的无穷乐趣。

    net版主也是从批处理新手逐渐走向成熟的,而且他成长的速度是惊人的,这得益于他刻苦的学习态度和高效的学习方法。而今

天他打破以往只发代码贴的习惯,费尽心血写下了这篇详细讲解变量嵌套的教程,其中更涉及到了cmd的最基本的处理机制,的确

是难能可贵。虽然,这其中蕴含的知识百相当广泛加上net版主因为时间原因在语句上欠通俗,刚开始时你可能会难以看懂和理解,

但我相信只要大家仔细地读认真地学,把握好变量嵌套的规律,并结合教程进行大量的练习,大家都能掌握好这一重要的批处理技

术,而迈上新的台阶的。
   
    本人罗索了一大堆,也扯了一通似与本贴主题无关的话题,无非就是想告诉大家,这是一篇不可或缺的好教程,大家一定要多读

多想多练,掌握好批处理变量嵌套的技巧,以不辜负编者的一片苦心。
***共同提高***

TOP

好贴!!!!!!!!
忍不住灌下水!!!!!O(∩_∩)O~
有一种爱叫放弃

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

漏掉%*,与%0~%9同一级别的。

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

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

TOP

返回列表