如果我只想使用目录列表查看特定扩展名的文件,我可以使用以下命令:
DIR *.txt
它显示了所有带有.txt
扩展名的文件。
现在我想知道是否有任何命令可以排除某些扩展名?
例如,我不想看到任何带有扩展名的文件.exe
,我该怎么做?
答案1
DIR 不允许你尝试执行的操作。但是 DIR 和 FINDSTR 可以解决这个问题。
例如,下面忽略 DIR 列表中的所有 .txt 文件。
dir | findstr /v /i "\.txt$"
答案2
dir /B | find /V ".txt"
这将列出所有文件,并且 find 将过滤掉不包含“.txt”的任何文件。这远非完美,但也许已经足够了 :)
答案3
这取决于您的命令解释器。
微软cmd
没有这样的功能,正如你从其他答案中看到的那样,人们必须对 的输出进行后处理dir
。然而,JP Software 的 TCC/LE具有此功能。它被称为文件排除范围并且像这样用于您问题中的示例:
目录 /[!*.exe] *
答案4
为此,使用 定义一个宏DOSKEY
。我排除了目录并忽略了大小写——YMMV。此外,/B
似乎是最合理的DIR
过滤选项,/D
但/W
不适合该任务,以及长格式/N
(默认)和/X
在某些情况下在文件名后包含附加文本(用于符号链接)。在命令行上检查它:
DOSKEY FIR=DIR/B/A-D^|FINDSTR /VIE $*
DOSKEY FLIR=DIR/X/A-D^|FINDSTR /VIE $*
FIR
为了已过滤 DIR
,明白了吗?:)FLIR
如果需要,可以使用长版本。然后像这样使用它:
fir .jpg
flir jpg
fir "jpg htm"
后者是因为如何FINDSTR
读取作为参数提供的模式,如 中所述/?
。只有第一个参数被视为模式,其他参数被解释为文件名,即使在管道中运行时也是如此。
我FINDSTR
更喜欢 plain,FIND
因为它有一个时髦的/E
开关,只在行尾进行过滤,这在按文件扩展名过滤时似乎更可取(但同样,YMMV)。
方便的SS64 站点解释如何在文件中设置宏TXT
以供永久重复使用。请注意,^
文本文件中存储的宏没有转义特殊字符的插入符号。
要了解宏(“控制台别名”)的工作原理,请阅读Eryk Sun 对 SO 的简短评论。