2015-03-31 137 views
0

由於某種原因,當我運行此DOS命令刪除空文件夾和子文件夾時,出現「文件未找到」錯誤。據我所知,它看起來是正確的。有沒有人有什麼建議?運行批處理命令刪除空文件夾和子文件夾時出現文件未找到錯誤

for /f "delims=" %%x in (dir /s /b /ad ^| sort /r') do rd "%%x" 2>NUL 
+0

「sort/r」的目的是爲目錄名稱以反向字母順序提供'for',所以最長的名字首先出現在列表中。因此,任何子目錄的最深的子目錄都會首先遇到。 RD_試圖刪除目錄,並且只有在目標目錄爲空時纔會成功,因此如果你有一個包含三個空子目錄的子目錄,那麼這三個子目錄將被刪除,只有這樣才能處理和刪除父目錄如果**現在**爲空。 – Magoo 2015-04-01 02:50:00

+0

在「dir」之前添加開頭引號可以解決問題,但是如果沒有,則需要進一步觀察。目錄可能被視爲不可惡化的兩個原因是,它實際上包含了不可見文件(通常是'thumbs.db'),您可以在'attrib *'中找到適當的子目錄中的文件以及您沒有的權限問題刪除目錄的權限。用'dir/q'查看權限。 – Magoo 2015-04-01 02:54:03

回答

0

您錯過了dir前面的勾號(')。試試這個:

for /f "delims=" %%x in ('dir /s /b /ad ^| sort /r') do rd "%%x" 2>NUL 

這是清潔

for /f "delims=" %%x in ('dir /b /ad') do echo.rd /s /q "%%x" 

取出回聲。只有結果看起來是正確的。

+0

謝謝!感謝擺脫了我的錯誤,但它並沒有刪除空文件夾。有什麼想法嗎? – 2015-03-31 15:46:10

+0

我不認爲你需要這種(不重要)。另外我會把/ S放在RD上,而不是放在dir上(可能更快)。請參閱RD/?.看到我更新的答案。我忽略了2> NUL,所以你看到任何錯誤。 – RGuggisberg 2015-03-31 23:54:51

+0

這是一個非常非常糟糕的想法。 'rd/s/q'旨在刪除一個完整的目錄子樹** REGARDLESS **是否爲空。 – Magoo 2015-04-01 02:45:04

相關問題