0

这似乎是一个简单的问题,但 '^' 批量做什么?我正在做类似于以下代码的事情(从这里复制)。文件 someFile.txt 包含要保存的文件的名称,“文件夹”是一个目录,用于删除someFile.txt 中提及的所有文件。为什么从语句中^删除时此代码不起作用。此外,为什么不能将下面的表达式包装起来以创建更长的表达式?^|fordo()

@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"
4

2 回答 2

1

它允许您打印特殊字符。

来自维基百科:

某些字符,例如竖线 ("|") 字符,对命令行具有特殊含义。除非使用插入符号 ^ 符号转义,否则它们不能使用 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

于 2013-10-24T02:00:26.503 回答
1

^ 转义下一个字符以带走所有特殊含义。^ 停止管道立即管道。do 可以像这样包装:

for /f "eol=: delims=" %%F in ('dir /b /a-d %folder% ^| findstr /vibg:%excludeFile%') do (del "%folder%\%%F")
于 2013-10-24T02:01:09.887 回答