繁体   English   中英

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

[英]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 (包括directoryname0101 - 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM