这似乎是一个简单的问题,但'^'批量做什么?我正在做类似于以下代码的事情(从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"
答案 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()的事情
答案 1 :(得分:1)
^逃脱下一个字符去除所有特殊含义。 ^从imediatly管道停止管道。这样做可以像这样包装:
for /f "eol=: delims=" %%F in ('dir /b /a-d %folder% ^| findstr /vibg:%excludeFile%') do (del "%folder%\%%F")