DOS:排除文件类型的目录列表?

时间:2009-05-07 14:31:40

标签: dos

在MS-DOS中,如果我输入dir *.pdf,我将获取目录中的所有PDF文件。有没有办法获取所有 PDF文件?像dir !*.pdf

这样的东西

谢谢!

5 个答案:

答案 0 :(得分:13)

我认为findstr有一个/ v选项,相当于grep -v(包括包含文本的所有行。所以我会看:

dir | findstr /vi ".pdf"

语法可能略有不同,我没有太多需要使用它,我不在我当前的位置运行Windows。

使用findstr /?从命令提示符获取详细信息。

或者,如果你安装了CygWin(我选择这种东西的工具),你可以使用grep本身:

ls -al | grep -vi '\.pdf$'

<强>附录:

我实际上并没有意识到这一点,但显然findtr也支持正则表达式,所以你可以使用:

dir | findstr /vi "\.pdf$"

和grep一样(我没有测试过这个,我只是在TechNet上找到它,所以你需要自己测试一下。)

答案 1 :(得分:3)

你可以将dir与findstr结合起来,几乎可以做你想要的事情:

dir * | findstr /vi .pdf

但请注意,如果文件名为my.pdf.converted.txt,则会在此处将其丢弃。

如果您真的想要获得幻想,这是一个完全正确的版本,更适合批处理脚本:

for /f %a in ('dir /b *') do @if "%~xa" neq ".txt" echo %a

祝你好运,不管你尝试什么:) DOS很“有趣”。

答案 2 :(得分:0)

我知道它已经为你工作但是你可以用大多数版本的DOS(至少是我记得的那些)这样做。

Attrib * .bad + H
dir / oE
Attrib * .bad -H

其中有隐藏你不想要显示的那些的影响,做dir然后取消隐藏它们。我必须承认这有点令人讨厌,但似乎确实有这个伎俩。

答案 3 :(得分:0)

在MS-DOS或CMD中,您只需输入以避免使用pdf文件:

dir | find/V ".pdf"

但请记住,输出底部的文件数量将包括pdf文件。

此外,您还可以将此命令用于其他扩展,将“.pdf”替换为“.xxx”,其中xxx是任何扩展名。

答案 4 :(得分:0)

这是一种不使用findstr / find或管道到另一个命令的简单方法:

for %%a in (*) do (
    if not exist %%~Na.pdf   echo %%a
)

基本上for循环将循环遍历所有文件。 “如果不存在”将确保不打印* .pdf文件

%% ~Na表示使用%%的文件名而不使用其扩展名。