在这个命令中:
FOR /F %%A IN ('TYPE "%InFile%"^|find /v /c ""')DO SET "Till=%%A"
^符号代表什么意思?
在这个命令中:
FOR /F %%A IN ('TYPE "%InFile%"^|find /v /c ""')DO SET "Till=%%A"
^符号代表什么意思?
在Windows批处理文件中,插入符号'^'有两个作用:
1. 行延续:
~~~
@echo off
dir ^
/ad ^
c:\temp
1. 在目录/ad c:\temp中查看C:\temp目录下的所有文件夹。
2. 转义保留的shell字符 & | ( < > ^.
使用前置符号"^"来转义并打印这些字符:
echo this pipe will print ^| but this one won't |
echo and this will print one caret ^^
在批处理脚本中,^ 符号(也称作插入符或抑扬符)是一个转义字符。当它被使用时,下一个字符会被解释为普通字符。
在你的脚本中,TYPE 命令的输出将被写入到 FIND 命令的输入中。
如果你不在 |
前使用转义字符 ^,那么 |
的常规含义就是一个 pipe character。
Documentation 中写道:
如果你在使用 echo 命令时需要显示管道 (|) 或重定向 (< 或 >) 字符,请在管道或重定向字符前面立即使用插入符字符(例如,^>、^< 或 ^|)。如果你需要使用插入符字符 (^),请键入两个(^^)。
无限递归描述了^
的一般行为,但对于为什么必须在IN ('yourCommand')
中使用它有些模糊。
yourCommand
实际上是隐式地在其自己的CMD.EXE进程内使用C:\Windows\system32\cmd.exe /c yourCommand
执行的。显然,在您的情况下,必须包含管道符号。但在将IN()子句传递到执行之前,整个行必须由批处理解析器解析。没有^
,|
会令批处理解析器混淆。在初始批处理解析期间,^
用于转义(保护)管道符号。
set /a "_num=5^3" &::0101 XOR 0011 = 0110 (decimal 6)
2] 在findstr中用于正则表达式,以查找行首的字符串:
Echo 12G6 |FindStr /R "[^0-9]" &::this will check for non-numeric characters