标题: 我的bat预处理学习心得,希望对和我一样的菜鸟有用 [打印本页]
作者: 悬崖之树 时间: 2012-12-16 18:05 标题: 我的bat预处理学习心得,希望对和我一样的菜鸟有用
以下面代码为例子:- @echo off
- setlocal enabledelayedexpansion
- set var=qdj^^
- echo %var%&!var!
-
- 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
- @echo off
- setlocal enabledelayedexpansion
- echo ^^^^^>^^!
-
- pause
复制代码
运行后显示 ^>!
为什么呢?
第一次预处理后: ^^>^!
第二次预处理后: ^>!
为什么第二次预处理前>号前没有转义符也被当成是普通字符了?
因为预处理就是这样的:
第一次预处理时 ! (感叹号) 被当做是普通字符,而第二次预处理时只有 ^ 和 !被当做是特殊字符。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |