2013-03-22 118 views
5

我希望此腳本列出文件夾名稱中包含「已刪除」的所有文件夾,但如果它們位於名爲「已完成」的文件夾中,則不會。批處理腳本列出文件夾但排除特定文件夾

對於exampel:列出文件夾,如果它在C:\temp,如果它在C:\temp\random_folder_name但不是沒有,如果它在C:\temp\done

dir /s "C:\temp" | findstr "\deleted" 

短篇小說,排除所有文件夾命名爲「完成」和它們的內容。

回答

7

上你幾乎沒有任何名稱中刪除\temp部分。

Findstr工具/ V返回所有行,不包含在很多案件的串

DIR /廣告將只顯示目錄(Atrribut =目錄)

dir /s /ad "C:\temp" | findstr "\deleted" | findstr /v "\done" 
+0

啊 - 但是這樣會排除名爲'done *'的目錄和文件,而不僅僅是''done'' – Magoo 2013-03-22 11:09:19

+0

/ad消除了文件名 - 我的錯誤。儘管如此,如果在'\ done'之後沒有'\',這也會匹配'\ doneeverything'。 OTOH,使用'\ done \'將只豁免'done'目錄,例如'c:\ are \ all \ done \ here'但是不會消除像'c:\ are \ not \ all \ done'。要做到這一點,你必須添加額外的'| findstr/i/e/v「\ done」'。 – Magoo 2013-03-22 11:45:42

+0

排除文件夾名稱(僅使用文件名)dir/a-d。 (請參閱dir /?) – Stephan 2013-03-22 12:27:54

1
dir /s "C:\temp" | findstr "\deleted"|findstr /i /v "\temp\done\" 

應符合該法案

  • ,或者如果你想省略已經「完成」的目錄路徑
+0

是 - /我是一個不錯的主意! – Stephan 2013-03-22 11:07:54

+1

如果「完成」文件夾位於特定路徑中,它會完成完美的工作。我希望它排除任何名爲「done」的文件夾,無論在哪裏,在這種情況下都是C:\ Temp,它是。 對不起,如果我不清楚這一點。 – Tomas 2013-03-22 11:10:01

0

dir /b /s /aa <path> 

會做的伎倆。/b表示較少的詳細輸出,/ s表示遞歸(子目錄),/ a表示僅用於存檔的文件。這通常是正常創建的文件的情況 - 它默認爲打開!

相關問題