^ 符号为转义符号,即还原特殊符号为其原貌,使其不再具有特殊含义。
比如:C:\Users\Administrator>route print | findstr "\<0.0.0.0\>"
.0.0.0 .0.0.0192.168.1.1192.168.1.100 25 这里管道符 | 得到了正确的使用。
假如我们在上面的命令中给管道符前加一个 ^ 符号,那么命令就会出错了:C:\Users\Administrator>route print ^| findstr "\<0.0.0.0\>"
route: 错误的参数 \<0.0.0.0\>
然而我们在看一个for循环的例子:
[Plain Text] 纯文本查看 复制代码 @echo off
for /F "tokens=3" %%i in ('route print | findstr "\<0.0.0.0\>"') do set "gw=%%i"
@echo %gw%
pause
这样返回出错了,其原因正好是出在管道符前缺少了一个 ^ 符号,为什么?
这是因为,如果这里在管道符前不使用 ^ 转义,那么解析器就会认为管道符前的 for /F "tokens=3" %%i in ('route print 这部分内容为“命令实体”,但是这是一条不完整的错误命令,因此执行出错了。如果对管道符进行转义,即写成 ^| ,那么解析器在第一遍解析时,不再认为原先管道符前的内容是一条指令;进而在第二遍解析时,认为括号之间的内容为“命令与管道之间的组合”,因此管道符此时得到了正确的解析。
最后,上面脚本中,gw 被括在两个 % 符号之间表示引用了一个名为 gw 的环境变量,而上头的 set 正是设置环境变量的一个命令。 |