'^'在批处理脚本中做了什么

时间:2013-10-24 01:56:34

标签: batch-file cmd

这似乎是一个简单的问题,但'^'批量做什么?我正在做类似于以下代码的事情(从here复制)。 someFile.txt文件包含要保存的文件的名称,'folder'是一个目录,用于删除someFile.txt中提到的所有文件。在^语句中^|中删除for时,为什么此代码无效?另外,为什么do之后的表达式不能包含在()中以创建更长的表达式?

@echo off
setlocal
set folder="c:\somePath"
set excludeFile="c:\somePath2\someFile.txt"
for /f "eol=: delims=" %%F in ('dir /b /a-d %folder% ^| findstr /vibg:%excludeFile%') do del "%folder%\%%F"

2 个答案:

答案 0 :(得分:1)

它允许您打印特殊字符。

来自WikiPedia:

某些字符(例如管道(“|”)字符)对命令行具有特殊含义。除非使用插入符号^符号进行转义,否则无法使用ECHO命令将它们打印为文本:

C:\> Echo foo | bar
'bar' is not recognized as an internal or external command,
operable program or batch file.

C:\> Echo foo ^| bar
foo | bar

不确定do()的事情

来源:http://en.wikipedia.org/wiki/Batch_file

答案 1 :(得分:1)

^逃脱下一个字符去除所有特殊含义。 ^从imediatly管道停止管道。这样做可以像这样包装:

for /f "eol=: delims=" %%F in ('dir /b /a-d %folder% ^| findstr /vibg:%excludeFile%') do (del "%folder%\%%F")