windows批处理列出任何名为Y的子目录中的任何文件类型X(到文本文件)

windows批处理列出任何名为Y的子目录中的任何文件类型X(到文本文件),windows,batch-file,Windows,Batch File,我知道我可以通过在目录树中键入 dir /s /b *.ext > list.txt 或名称为的任何子目录 dir /s/b *directoryName* >list.txt 但是,我如何结合这一点来获得按类型和子目录名列出的文件列表呢 dir /s /b *directoryname\*.ext >>The filename, directory name, or volume label syntax is incorrect. 阅读的帮助,然后在命令行中尝

我知道我可以通过在目录树中键入

dir /s /b *.ext > list.txt
或名称为的任何子目录

dir /s/b *directoryName* >list.txt
但是,我如何结合这一点来获得按类型和子目录名列出的文件列表呢

 dir /s /b *directoryname\*.ext
>>The filename, directory name, or volume label syntax is incorrect.

阅读的帮助,然后在命令行中尝试此操作

对于(dirname*)中的/D%a,执行@dir/s/b%a*.ext


我可能已经理解了,但你不能这样做:

dir/s/b“子文件夹名称\*.ext”


如果您想要完全递归,您可以使用
findstr
从完整的
目录/b/s
中删除不需要的内容

dir /s /b | findstr /i "directoryname.*\.ext$" >list.txt
。。。将匹配包含
directoryname
(包括
directoryname01
01-directoryname
)的任何目录中的
.ext
文件,其中目录可能比当前目录深一级以上

findstr
search regexp中,
directoryname
之后的
*
表示任何字符中的0个或多个。在glob语法中,它类似于
*directoryname*.ext
。有关
findstr
语法的更多信息,请参阅
help findstr

dir /s /b /a-d *.ext|findstr /i /r ".*\\.*dirname.*\\.*"
/a-d
仅抑制与
.ext
掩码匹配的目录名-文件名。
findstr
上的
/r
可能是多余的,因为regex是默认值
/i
强制案例不敏感
要匹配的字符串是

[any number of any characters]\[any number of any characters][directoryname][any number of any characters]\[any number of any characters]

由于
\
转义
\

此解决方案不是递归此解决方案不是递归您是对的,编辑为包含/R使其成为递归,现在是。
[any number of any characters]\[any number of any characters][directoryname][any number of any characters]\[any number of any characters]