我知道我可以在目录树中按类型获取任何文件
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.
HELP FOR
在命令行中阅读并尝试
for /D %a in (dirname*) do @dir /s /b %a*.ext
for /R /D %a in (dirname*) do @dir /s /b %a\*.ext 1>>list.txt 2>nul
我可能已经理解,但你不能这样做:
dir /s /b "SubfolderName\*.ext"
?
如果您想要完全递归,您可以使用findstr
完整的dir /b /s
.
dir /s /b | findstr /i "directoryname.*\.ext$" >list.txt
... 将匹配包含(包括或).ext
的任何目录中的文件,其中该目录可能比当前目录深一层以上。directoryname
directoryname01
01 - directoryname
在findstr
搜索正则表达式中,.*
afterdirectoryname
表示任何字符的 0 个或多个。在 glob 语法中,它就像*directoryname*.ext
. 有关语法help findstr
的更多信息,请参阅。findstr
dir /s /b /a-d *.ext|findstr /i /r ".*\\.*dirname.*\\.*"
/a-d
抑制与.ext
掩码匹配的目录名 - 仅文件名。可能是多余的
,因为正则表达式是默认
的强制大小写不敏感
字符串匹配是 /r
findstr
/i
[any number of any characters]\[any number of any characters][directoryname][any number of any characters]\[any number of any characters]
因为\
逃跑了\