在Windows命令行上使用DIR命令排除特定扩展名的文件


20

如果我只想使用目录列表来查看特定扩展名的文件,则可以使用以下命令:

DIR *.txt 

它显示所有带有.txt扩展名的文件。
现在我想知道是否有任何命令可以排除某些扩展名?
例如,我不想看到带有扩展名的任何文件,.exe我该怎么办?

Answers:


27

DIR不允许您尝试做的事。但是,DIR和FINDSTR可以解决此问题。

例如,以下内容将忽略DIR列表中的所有.txt文件。

dir | findstr /v /i "\.txt$" 

2
您可能要使用,dir /b | findstr /v /i "\.txt$"因为dir会在末尾输出标头以及可能的不正确文件和文件夹数
phuclv

为什么findstr刚刚结束find
Sopalajo de Arrierez

因为find搜索文本并且findstr支持正则表达式,所以建议使用Findstr。如果您只想搜索确切的字符串,找到也可以。
IUnknown

8
dir /B | find /V ".txt"

这将列出所有文件,查找将过滤掉不包含“ .txt”的所有内容。它远非完美,但也许就足够了:)


/B我会说不需要,但是只要我不希望使用'findstr'(实际接受的答案),我就喜欢这个答案。
Sopalajo de Arrierez,

3

这取决于您的命令解释器。

微软cmd没有这种功能,从其他答案中可以看出,必须对的输出进行后处理dirJP Software的TCC / LE可以。它称为文件排除范围,用于您的问题中的示例:

目录/[!*.exe] *


谢谢,但是我认为该工具可以作为独立程序运行。我正在使用ubuntu中的Windows shell或bash在外部程序上运行我的应用程序,因此该工具不适合使用。如果它们提供cmd线开关,则将非常有用。
Johnydep

1
上面显然一个命令行开关。阅读超链接的文档。当然,在大多数编程语言中,花很多时间使用外壳程序来获取目录内容是很愚蠢的,并且使用错误的StackExchange来编写应用程序。
JdeBP

感谢您的解释,这是真的,但这是一种扫描需要高度的目录的解决方法,当我可以从cmd提示符中获取结果而无需更高权限时,我不想让代码触发UAC提示符。
Johnydep
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.