【发布时间】:2021-11-03 21:04:54
【问题描述】:
在这个命令中:
FOR /F %%A IN ('TYPE "%InFile%"^|find /v /c ""')DO SET "Till=%%A"
^ 是什么意思?
【问题讨论】:
-
它也可以是一个转义字符,虽然我不确定它在这里的用法。 robvanderwoude.com/escapechars.php
标签: windows batch-file
在这个命令中:
FOR /F %%A IN ('TYPE "%InFile%"^|find /v /c ""')DO SET "Till=%%A"
^ 是什么意思?
【问题讨论】:
标签: windows batch-file
^ 符号(也称为脱字符号或抑扬符)是批处理脚本中的转义字符。使用时,下一个字符被解释为普通字符。
在您的脚本中,将 TYPE 命令的输出作为 FIND 命令的输入写入。
如果在| 之前不使用转义字符^,那么| 的常规含义就是pipe character。
要在使用 echo 时显示竖线 (|) 或重定向字符(),请在竖线或重定向字符(例如,^>、^
【讨论】:
插入符号 '^' 字符在 Windows 批处理文件中有两个用途:
1.续行:
~~~
@echo off
dir ^
/ad ^
c:\temp
~~~~
结果是 dir /ad c:\temp,它只列出 C:\temp 中的目录。
2。转义保留的 shell 字符 & | ( ^.
使用前面的插入符号来转义并打印字符:
echo this pipe will print ^| but this one won't |
echo and this will print one caret ^^
【讨论】:
^ 后面的字符是换行符,则换行符被删除,并且后续字符被转义。
Infinite Recursion describes the general behavior of ^,但对于为什么必须在IN ('yourCommand') 中使用它有点模糊。
yourCommand 实际上是在其自己的 CMD.EXE 进程中使用C:\Windows\system32\cmd.exe /c yourCommand 隐式执行的。显然,在您的情况下,管道必须包含在命令中。但是整行必须由批处理解析器解析,然后才能传递 IN() 子句以执行。如果没有^,| 会混淆批处理解析器。 ^ 在初始批处理解析期间转义(保护)管道。
【讨论】:
在给定的示例中,插入符号用于转义特殊符号。 虽然它在 windows 命令中有其他用法
1] 在集合中它是一个 XOR 运算符:
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
【讨论】: