Board logo

标题: 我的bat预处理学习心得,希望对和我一样的菜鸟有用 [打印本页]

作者: 悬崖之树    时间: 2012-12-16 18:05     标题: 我的bat预处理学习心得,希望对和我一样的菜鸟有用

以下面代码为例子:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set var=qdj^^
  4. echo %var%&!var!
  5. pause
复制代码
运行结果是  qdj&qdj^   为什么会这样呢?
运行 set var=qdj^^后,var就变成了 qdj^ (为什么?看了下面的就知道了。)
因为  echo %var%&!var! 含有感叹号,所以要预处理两次。
第一次:先替换%var% 就变成了 qdj^&!var!,然后进行特殊符号的处理 变成 qdj&!var!,为什么!var!没有处理?因为现在它还是普通的字符串呢。
第二次:先处理特殊符号,由于没有特殊符号,就跳过,然后 替换 !var!
这样就成了 echo qdj&qdj^  了。
作者: 悬崖之树    时间: 2012-12-16 18:24

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. echo ^^^^^>^^!
  4. pause
复制代码
运行后显示  ^>!
为什么呢?
第一次预处理后: ^^>^!
第二次预处理后: ^>!
为什么第二次预处理前>号前没有转义符也被当成是普通字符了?
因为预处理就是这样的:
第一次预处理时 ! (感叹号) 被当做是普通字符,而第二次预处理时只有 ^ 和 !被当做是特殊字符。




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