2011-01-21 101 views
30

我有目錄結構/ foo/bar/fooBar/..我想寫一個Windows命令,在那裏我可以提到直到foo目錄的路徑,它會在/ foo中遞歸地刪除所有文件和目錄,但它不應該刪除foo目錄。如何遞歸刪除文件

我一直在使用rmdir /q /s [path to foo]但該命令將刪除foo的目錄中。讓我知道是否有任何命令來完成這一點。

+0

如果你cd到/路徑/要執行命令rmdir前/富? – BigMike 2011-12-30 09:29:15

+3

del/s * .xml 在Windows 10中工作 – JenonD 2015-10-10 09:40:05

+0

[deltree發生了什麼以及它的替代物是什麼?](http://stackoverflow.com/questions/338895/what-ever-happened-to- deltree-and-whats-its-replacement) – 2017-02-16 14:46:38

回答

42
rd /s /q /path/to/foo 
md /path/to/foo 
2

的deltree /富/ *應該正常工作。

+1

我很不幸在Windows XP上沒有deltree命令 – Akshay 2011-01-21 07:03:09

+0

那麼你應該堅持@ Ferruccio的解決方案。 – 2011-01-21 07:15:21

+0

在win7 x64中無法正常工作 – m1m1k 2015-04-10 20:52:36

7
del /f /s /q DirectoryWhichContainsFilesToDelete/\* 

這將刪除該文件夾DirectoryWhichContainsFilesToDelete中的所有文件,但不刪除文件夾本身。 玩得開心:)

1

我已經在過去一個批處理文件中使用此。它使用for循環來導航目錄結構。

這裏我刪除CVS子目錄過一棵樹,從一個分支複製到另一個時需要的。

@echo off 
if /I exist CVS. rd CVS /s /q >nul 
for /F %%z in ('dir cvs /ad /s /b') do echo %%z && rd /s /q %%z 
echo Batchfile %0 is complete 
6

我一直在抓我的頭。創建一個使用rmdir的for循環很容易,但它留下了長名稱中有空格的文件夾。可以操作dir列表並獲取8.3文件名,但這是一個更簡單的解決方案。

創建一個空文件夾即可;

robocopy \empty_folder \folder_with_sub_folders /PURGE 

所有子文件夾&文件將被刪除。

3

我一直在尋找一個簡單的命令來刪除所有目錄中的文件遞歸,但留下的目錄結構不變。所以,也許這可能是有趣的;)

for /f "delims=" %i in ('dir /B /S /A:-DH') do @del /F /Q /A:H "%i" 

命令 'DIR/B/S/A:-D' 僅列出文件(/ A:-D)在當前目錄遞歸(/ S)沒有' dir'總結報告(/ B)。 'for'循環遍歷每行(/ delims =)並執行刪除命令,強制安靜。我另外使用隱藏標誌(/ H)來列出和刪除一些神祕的(例如thumbs.db)文件。

4
del X /f /s /q 
rd X /s /q 

雖然這將刪除ROOt目錄。再次使用

md X 

或先製作一份。

否則你就必須做一批funkiness

dir X /ad /b 

會給你X的直接子目錄的列表你可以計算出其餘

0

爲了防止foo目錄的刪除嘗試更改目錄到foo之前刪除如:

CD C:\ FOO RD/S/QC:\ FOO

這將刪除foo下的所有文件和文件夾,但不是foo。將顯示一條錯誤消息,如下所示:「進程無法訪問該文件,因爲它正在被另一個進程使用。」

1

嘗試使用PowerShell:

powershell -Command "Remove-Item '\foo\*' -Recurse -Force"