如何列出除一个以外的所有目录?

时间:2013-01-10 16:09:44

标签: batch-file for-loop directory

我正在编写一个批处理文件,我需要列出除“pdf”之外的所有目录。

这是我目前拥有的一个简单示例,返回所有目录:

for /r /d %%D in ("*") do (
        echo %%D
    )

是否有相当于:

for /r /d %%D not in ("pdf") do (
        echo %%D
    )

当我尝试时,我得到以下输出:

"not was unexpected at this time."  
C:\txt-in\for /r /d %D not in ("pdf") do (

2 个答案:

答案 0 :(得分:4)

你的第一个片段就在附近。只需在循环中添加if语句或更改循环即可将dir命令与find一起使用。

显示文件夹名称而不是“pdf”

for /r /d %%D in (*) do (
    if /i not "%%~nxD"=="pdf" (
        echo %%D
    )
)

或显示不包含“pdf”的文件夹名称

for /f "delims=" %%D in ('dir /a:d /b ^| find /v /i "pdf"') do (
    echo %%D
)

/i匹配,无论字母大小写如何。删除/i以使搜索大小写不敏感。

答案 1 :(得分:3)

最简单的方法可能是

for /r /d %%D in ("*") do (
    if not "%%~nxD"=="pdf" (
    echo %%D
    )
)