Batch file 批处理:如何将dir输出管道化到findstr?
我想在不使用/f选项的情况下为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添
@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
没有区别;但是我会把它移除。。。