Board logo

标题: [文本处理] 批处理命令call是如何解释执行的? [打印本页]

作者: 悬崖之树    时间: 2012-12-11 19:40     标题: 批处理命令call是如何解释执行的?

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set str1=abcd&set count1=2&call set str3=%%str1:~!count1!,1%%
  4. echo %str3%
  5. pause
复制代码
我想知道命令解释器对上面的代码是如何解释执行的,不知道先是把%%换成%还是先替换!count1! ?
还是 第一步:同时替换 %% 和 !count1! 这样代码就成了 set str3=%str1:~2,1%
       第二步:执行set str3=%str1:~2,1%就把 str3赋值为 c
作者: poter    时间: 2012-12-11 19:59

批处理预加载的话,应该是先读取变量!count1!的值

然后再通过call转义,把%%号变成惊叹号,set str3=!str:~2,1!
作者: BAT-VBS    时间: 2012-12-11 22:21

你把@echo off删掉就知道了




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2