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

我的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^  了。
时光荏苒||新陈代谢&&涛声依旧||本性难移

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

TOP

返回列表