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

[文本处理] [已解决]批处理for中set集的命令带有转义字符怎么理解?

本帖最后由 abcdshenji 于 2011-4-21 12:25 编辑

就是这句:
  1. for /f "skip=1 delims=" %%k in ('wmic cpu get caption^|findstr /i "."') do echo 描述: %%k
复制代码
|为什么前面要加^?不加的话就运行不了,但是单独
  1. wmic cpu get caption|findstr /i "."
复制代码
就可以,为什么?难道说set集中的命令在预处理的时候改变了什么?这个过程是怎样的不理解。。。

  1. 加了前缀 ^ ,在预处理时就是普通字符,同时 ^ 被脱去,再开新解释器时他才成为管道
复制代码
这句让我明白了一点,可是问题又来了:
  1. set a=^^^>
  2. echo %a%
复制代码
结果是">",多几个^或者少几个^都会执行失败
  1. echo ^^^>
复制代码
结果是"^>",当^个数是奇数是执行成功,偶数是执行失败

这是为啥?到底预处理时候脱几个^,执行的时候又脱几个^??

TOP

2楼的代码我能看明白,我的意思是看完后又另外引出^用法的问题,不过现在我明白了,你解释的很清楚:

echo;^^^^^>
第一个^转义第二个^,第三个^转义第四个^,第五个^转义第一个>,结果显示第二个^、第四个^和>
echo;^^^^>
此时>没被转义,就是输出的意思,那输出到哪啊?语法错误!~

谢谢hanyeguxing大大!

TOP

返回列表