2013-01-10 33 views
2

我正在寫一個批處理文件,我需要列出除「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 (

回答

3

最簡單的方法可能是

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

不要忘記使用'%%〜nxD'包括對於包含時期的文件夾名稱整個文件夾的名稱。 –

+1

謝謝大衛,我沒想到! :) –

+0

@BaliC完美的作品,非常感謝你! – Baxter

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以使搜索大小寫不敏感。

相關問題