[英]windows batch list any file type X in any sub dir named Y (to textfile)
我知道我可以通过在目录树中键入来获取任何文件
dir /s /b *.ext > list.txt
或任何带有名称的子目录
dir /s/b *directoryName* >list.txt
但是如何将其组合起来以按类型AND子目录名称获取文件列表?
dir /s /b *directoryname\*.ext
>>The filename, directory name, or volume label syntax is incorrect.
阅读HELP FOR
并在命令行中尝试
为(dirname *)中的/ D%a执行@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 /b /s
。
dir /s /b | findstr /i "directoryname.*\.ext$" >list.txt
...将匹配包含directoryname
(包括directoryname01
或01 - directoryname
)的任何目录中的.ext
文件,其中该目录可能比当前目录.ext
。
在findstr
搜索正则表达式中, directoryname
后的.*
表示任何字符的0个或多个。 在glob语法中,它类似于*directoryname*.ext
。 有关findstr
语法的更多信息,请参见help findstr
。
dir /s /b /a-d *.ext|findstr /i /r ".*\\.*dirname.*\\.*"
/ad
禁止与.ext
mask-filenames匹配的目录名。
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]
由于\\
逃脱\\
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.