符号^在批处理脚本中的含义是什么?

use*_*908 20 windows batch-file

在此命令中:

FOR /F %%A IN ('TYPE "%InFile%"^|find /v /c ""')DO SET "Till=%%A"
Run Code Online (Sandbox Code Playgroud)

什么^意思?

Inf*_*ion 20

^符号(也称为插入符号或限制符号)是批处理脚本中的转义字符.使用它时,下一个字符被解释为普通字符.

在您的脚本中,TYPE命令的输出将被写为FIND命令的输入.
如果你之前没有使用转义字符^ |,则常规含义|管道符.

文件说:

要在使用echo时显示管道(|)或重定向字符(<或>),请在管道或重定向字符之前使用插入符(例如,^>,^ <或^ |).如果需要使用插入符(^),请键入两个(^^).


Sun*_*nny 17

插入符'^'字符在Windows批处理文件中有两个用途:

线路延续:

~~~

@echo off

dir ^
/ad ^
c:\temp
Run Code Online (Sandbox Code Playgroud)

~~~~

结果为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 ^^
Run Code Online (Sandbox Code Playgroud)

  • 1 - 行继续是 2 - 一般转义下一个字符行为的特殊情况。如果“^”后面的字符是换行符,则换行符将被删除,***并且后续字符将被转义***。 (3认同)

dbe*_*ham 11

无限递归描述了它的一般行为^,但是为什么必须在其中使用它有点模糊IN ('yourCommand').

yourCommand实际上是使用自己的CMD.EXE进程隐式执行的C:\Windows\system32\cmd.exe /c yourCommand.显然,管道必须包含在您的情况下的命令中.但是,批处理解析器必须先解析整行,然后才能执行IN()子句.如果没有^,|则会导致批处理解析器混淆.所述^逸出的初始批次解析期间(保护)的管.

  • @ user3059908 - 几乎不可能阅读评论中的代码,我不知道你的问题是什么.也许您应该使用格式正确的代码和明确说明的问题创建一个新问题.(描述预期的行为,以及它是如何工作的) (3认同)