Windows 符号“^”在批处理脚本中是什么意思?
在此命令中:Windows 符号“^”在批处理脚本中是什么意思?,windows,batch-file,Windows,Batch File,在此命令中: FOR /F %%A IN ('TYPE "%InFile%"^|find /v /c ""')DO SET "Till=%%A" ^是什么意思?符号(也称为插入符号或扬抑符号)是批处理脚本中的转义字符。使用时,下一个字符将被解释为普通字符 在脚本中,要写入的TYPE命令的输出作为FIND命令的输入。 如果在之前不使用转义字符^ 报告说: 要在使用echo时显示管道(|)或重定向字符(),请在管道或重定向字符之前使用插入符号字符(例如,^>,^插入符号“^”字符在Windows批
FOR /F %%A IN ('TYPE "%InFile%"^|find /v /c ""')DO SET "Till=%%A"
^
是什么意思?符号(也称为插入符号或扬抑符号)是批处理脚本中的转义字符。使用时,下一个字符将被解释为普通字符
在脚本中,要写入的TYPE命令的输出作为FIND命令的输入。如果在
之前不使用转义字符^
报告说:
要在使用echo时显示管道(|)或重定向字符(<或>),请在管道或重定向字符之前使用插入符号字符(例如,^>,^插入符号“^”字符在Windows批处理文件中有两个用途: 1.行延续: ~~~ ~~~~ 结果是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 ^^
,但对于为什么必须在('yourCommand')中使用它却有点模糊
yourCommand
实际上是使用C:\Windows\system32\CMD.EXE/C yourCommand
在其自己的CMD.EXE进程中隐式执行的。显然,在您的情况下,管道必须包含在命令中。但批处理分析器必须先解析整行,然后才能通过in()子句。如果没有^
,则|
会混淆批处理解析器。^
在初始批处理解析期间转义(保护)管道。在给定示例中,插入符号用于转义特殊符号。
虽然它在windows命令中还有其他用法
1] 在集合中,它是一个XOR运算符:
set /a "_num=5^3" &::0101 XOR 0011 = 0110 (decimal 6)
2] In-findstr用于在行首查找字符串的正则表达式:
Echo 12G6 |FindStr /R "[^0-9]" &::this will check for non-numeric characters
它也可以是转义字符,尽管我不确定它在这里的用法。更好,但仍然有点模糊。请参阅@dbenham nice answer:+1感谢您的答案payeli。您可以查看在批处理文件中使用^的代码吗。SET“infle=test.txt”SET“OutFile=out.txt”SET“Replace=test”SET“ReplaceWith=sample”REM获取总行数[包括空行]对于/F%%A IN('TYPE”%infle%%“^ | find/v/c“'),请设置“直到%%A”REM使用更改创建输出文件SETLOCAL EnableDelayedExpansion>%OutFile%” ENDLOCAL@user3059908-阅读您评论中的代码几乎是不可能的,我不知道您的问题是什么。也许您应该创建一个新问题,其中包含正确格式的代码和明确说明的问题。(描述预期的行为,以及它是如何工作的)1-行继续是2-一般转义下一个字符行为的特例。如果
^
后面的字符是换行符,则换行符被剥离,随后的字符被转义。
Echo 12G6 |FindStr /R "[^0-9]" &::this will check for non-numeric characters