Windows批处理:for和findstr包含和排除结果

时间:2014-02-04 21:36:04

标签: windows batch-file findstr

我有一个我正在迭代的字符串列表,我需要排除某些字符串,并在后续处理中包含其他字符串。 像这样:

listmystuff | for /F "usebackq" %%D in (`findstr /r "something*" ^| findstr /v "but not thisstuff"`)  do interestingthing

这是错误的。什么工作有一个发现,但不是两个。 什么是对的?

2 个答案:

答案 0 :(得分:2)

您想要一个管道|,而不是条件命令连接&&。必须转义管道字符。

您只需要围绕整个命令使用一组单引号。 (如果使用usebackq选项,则为反对)

如果在批处理文件中使用,则需要加倍百分比。

您的初始FINDSTR需要一个文件规范来搜索(或者管道传输的数据)

for /f "options" %%D in ('findstr "something" fileSpec ^| findstr /v "butNotThis"') do myThing

答案 1 :(得分:0)

使用show databases命令运行此命令。这是使用for命令解析数据的常用方法。

for /F "delims=" %%D in ('show databases ^| findstr /r "something*" ^| findstr /v /c:"but not thisstuff" ')  do echo %%D