2009-12-27 29 views
215

假設有一個名爲%pathtofolder%的變量,因爲它表明它是文件夾的完整路徑。如何在Windows的命令提示符下刪除特定目錄中的文件/子文件夾

我想刪除此目錄中的每個文件和子文件夾,但不是目錄本身。

但是,可能會出現像'此文件/文件夾已被使用'的錯誤...發生這種情況時,應該繼續並跳過該文件/文件夾。

任何人都可以爲我提供一些指令嗎?

+0

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

回答

186

你可以使用這個shell腳本來清​​理文件夾和文件中C:\Tempsource

del /q "C:\Temp\*" 
FOR /D %%p IN ("C:\Temp\*.*") DO rmdir "%%p" /s /q 

創建一個包含上述命令的批處理文件(比如delete.bat)。轉到delete.bat文件所在的位置,然後運行命令:delete.bat

+19

我試過了,但不幸的是文件沒有刪除,只有子文件夾被刪除。例如,我有一個名爲Test的文件夾。它包含2個名爲「Ripon」和「Wasim」的文件夾,它包含一個名爲「riponalwasim.txt」的文件。子文件夾Ripon和Wasim已被刪除,但riponalwasim.txt未被刪除。 – 2013-07-19 04:02:42

+1

我們怎樣才能刪除文件夾(不是文件)? – AminM 2014-02-16 03:06:19

+9

如果您希望從命令行直接運行,請使用單一百分比符號。 '%p' – Alex 2014-03-09 08:24:52

-9
del %pathtofolder%\*.* /s /f /q 

刪除所有文件和子文件夾在%pathtofolder%,包括只讀文件,不提示確認

+8

對此我留下了%pathtofolder%中的空子文件夾。 – 2011-12-15 09:29:08

+34

它不會刪除%pathtofolder%中的子文件夾。如此糟糕,我沒有聲望投下這個虛假答案 – 2012-07-03 13:49:04

+1

正如Vitalii Korsakov所指出的那樣,這會從子目錄中刪除所有文件和文件,但將子目錄留在OP問及如何刪除的地方。 – 2012-10-16 20:38:10

241

rmdir是我所有時間最喜歡的工作命令。它適用於刪除包含子文件夾的大型文件和文件夾。沒有創建備份,因此在運行此命令之前,請確保您已安全地複製了您的文件。

RMDIR "FOLDERNAME" /S /Q 

這會靜默地刪除文件夾以及所有文件和子文件夾。

+32

這似乎刪除了OP想要的路徑保持。 – 2012-10-16 20:49:22

+7

爲什麼最初的'\'? – nawfal 2013-10-19 11:46:42

+0

我得到' - 訪問被拒絕.' – Gattsu 2015-08-13 07:40:13

69

我能想到的最簡單的辦法是用

RD /S /Q folderPath 

然後再創建這個目錄中刪除整個目錄:

MD folderPath 
+3

如果您刪除但不創建新文件夾的權限?我希望它有可能:) – Sandy 2013-02-01 15:13:34

+11

這是一個不好的解決方案,因爲它在目錄節點的文件系統上引入了一個競爭,即如果在之後立即執行第二個命令可能會失敗。 – 2013-11-12 17:10:11

+12

此外,如果目錄具有特殊權限,那麼解決方案很糟糕* ahem *(whoops) – 2015-04-22 10:32:56

3

可以使用下面的命令來刪除所有內容做的,父文件夾本身:

RMDIR [/S] [/Q] [drive:]path    
+6

該命令會刪除文件夾本身。 – Baz 2013-07-18 21:58:30

+0

@Baz:你說得對。對不起,我錯了。我已更正 – 2013-07-19 03:30:50

43

這將刪除文件夾和文件並離開後面的文件夾。

pushd "%pathtofolder%" && (rd /s /q "%pathtofolder%" 2>nul & popd) 
+1

對於任何不確定這種方法的人:它絕對不會重新創建該目錄。如果沒有'2> nul',它會輸出「進程無法訪問該文件,因爲它正在被另一個進程使用。」 – 2013-11-12 17:28:09

+4

我討厭Windows無法刪除某些程序正在使用的文件和文件夾。我喜歡你在這一行中對你有利。 – andref 2014-03-27 22:13:52

+0

所以這個超級魔術是如何在Windows中清空文件夾?令人印象深刻:) – mlvljr 2015-01-13 01:01:12

33
@ECHO OFF 

Set dir=path-to-dir 

Echo Deleting all files from %dir% 
del %dir%\* /F /Q 

Echo Deleting all folders from %dir% 
for /d %%p in (%dir%\*) Do rd /Q /S "%%p" 
@echo Folder deleted. 


exit 

...刪除所有文件和指定目錄下的文件夾,而不是目錄本身。

+2

這應該是正確的答案..只是使簡單.. deletemyfoldercontents.bat文件..彈出在你的路徑,它的作品就像一個魅力.. – timbrown 2015-08-27 17:47:08

+0

這就是我正在尋找因爲,非常感謝... – Aenadon 2016-09-15 09:55:39

+0

是的,這是正確的答案 – 2017-01-30 09:37:27

17
CD [Your_Folder] 
RMDIR /S /Q . 

您會收到一條錯誤消息,告訴您RMDIR命令無法訪問當前文件夾,因此無法刪除它。

更新

this有用的評論(感謝Moritz Both),您可以添加&&之間,所以如果CD命令失敗RMDIR將無法​​運行(例如輸入錯誤的目錄名):

CD [Your_Folder] && RMDIR /S /Q . 

Windows Command-Line Reference

/S:刪除一個目錄樹(指定的目錄及其所有子目錄 ,包括所有文件)。

/問:指定安靜模式。 刪除目錄樹時不提示確認。 (請注意,只有/ s是指定的 時才起作用。)

+0

這是清空臨時文件的理想選擇,但是'cd [Your_Folder]'超級重要 - 我必須記住所以我不會刪除目錄本身... – sage 2015-10-15 21:56:48

+3

這是正確的解決方案。在命令之間添加'&&'而不是換行符,並且您可以從發生故障的CD中安全地進行操作。 – 2017-06-19 07:24:16

+0

這是一個簡單而正確的解決方案。即使適用於Azure命令外殼! – Philippe 2017-11-16 06:35:08

8

RD代表REMOVE目錄。

/S:除了文件夾本身之外,還刪除所有文件和子文件夾 。 使用此選項刪除整個文件夾樹。

/Q:安靜 - 不顯示YN確認

例子:

RD /S /Q C:/folder_path/here 
+1

upvoted是唯一解釋'/ S'和'/ Q'是什麼意思的意思 – CodeBurner 2017-03-24 11:11:22

+2

No.'rd'相當於'rmdir',它將刪除目錄本身,而不是OP所要的。 – FaithReaper 2017-06-22 09:26:01

1

要刪除文件:

del PATH_TO_FILE 

與所有文件刪除文件夾,在其中:

rmdir /s /q PATH_TO_FOLDER 

從特定文件夾刪除所有文件(不刪除文件夾本身)有點複雜。 del /s *.*無法刪除文件夾,但會從所有子文件夾中刪除文件。因此需要兩個命令:

del /q PATH_TO_FOLDER\*.* 
for /d %i in (PATH_TO_FOLDER\*.*) do @rmdir /s /q "%i" 
+0

是的,這是正確的。必須是兩個步驟。這值得讚賞,因爲它解釋了爲什麼,與上面更多的投票答案相比。 – FaithReaper 2017-06-22 09:27:27

6

我使用PowerShell

Remove-Item c:\scripts\* -recurse 

它將刪除該文件夾的內容,而不是文件夾本身。

+0

rhellem的答案是最近的,但它是唯一的答案,將實際爲我做這個。 (Win 8.1,而不是選擇) – philologon 2017-02-05 00:29:45

+0

從批處理命令行:'powershell -Command「Remove-Item'PathToMyDirectory \ *'-Recurse -Force」' – 2017-02-16 14:37:48

0
@ECHO OFF 
rem next line removes all files in temp folder 
DEL /A /F /Q /S "%temp%\*.*" 
rem next line cleans up the folder's content 
FOR /D %%p IN ("%temp%\*.*") DO RD "%%p" /S /Q 
+0

你的答案的一些簡短的評論會很好。 – Masoud 2017-06-06 19:09:48

+0

第二行將從Windows臨時目錄中的所有文件夾中刪除每個文件中的文件,第三行清理包含其內容的目錄。 – Robie 2017-06-06 22:41:51

3

使用記事本創建文本文檔和複製/粘貼此:

rmdir /s/q "%temp%" 
mkdir "%temp%" 

選擇另存爲,文件名:

delete_temp.bat

另存爲鍵入:所有文件,然後單擊保存按鈕。

工作在任何類型的帳戶(管理員或標準用戶),只需運行它! 在這個例子中我使用了temp變量,但你可以使用任何其他的!附:僅適用於Windows操作系統!

相關問題