Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 符号“^”在批处理脚本中是什么意思?_Windows_Batch File - Fatal编程技术网

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