Batch file 批处理:如何将dir输出管道化到findstr?

Batch file 批处理:如何将dir输出管道化到findstr?,batch-file,Batch File,我想在不使用/f选项的情况下为findstr提供文件名,我的脚本如下: @echo off for /d /r %%d in (.) do dir /b /a-d "%%d" 我想检查dir命令显示的每个文件中是否存在特定的字符串 谢谢您正在寻找的是选项/F及其特殊值/,它从控制台而不是从文件中读取要搜索的文件列表: for/D/R%%D in(.)do dir/B/A:-D“%%D”| findstr/F:/“搜索字符串” 由于使用for循环只是为了返回目录树,因此只需将switch/S添

我想在不使用/f选项的情况下为findstr提供文件名,我的脚本如下:

@echo off
for /d /r %%d in (.) do dir /b /a-d "%%d"
我想检查dir命令显示的每个文件中是否存在特定的字符串


谢谢

您正在寻找的是选项
/F
及其特殊值
/
,它从控制台而不是从文件中读取要搜索的文件列表:

for/D/R%%D in(.)do dir/B/A:-D“%%D”| findstr/F:/“搜索字符串”
由于使用
for
循环只是为了返回目录树,因此只需将switch
/S
添加到
dir
命令中,即可完全取消循环:

dir/B/S/A:-D | findstr/F:/“搜索字符串”

选项有什么问题?@aschipfl我不想使用文件,我想在一个批处理行中显示包含特定字符串的所有文件,也不想更改脚本的结构(对于…do dir…)如果要在
目录中使用
/a-d
,为什么要在
目录中使用
/d
标志;您会发现,
/F:///code>从控制台读取文件列表,因此您可以通过管道进入命令:
dir/B/A:-D“%%~D”| findstr/F://“搜索字符串”
。实际上,我根本不会使用
for
循环,而是这样编写:
dir/B/S/A:-D | findstr/F:/“search strings”
@somethingsdark,因为
for
集合中没有通配符,所以指定与否
/D
没有区别;但是我会把它移除。。。