簡體   English   中英

在Windows上以遞歸方式刪除目錄的內容

[英]Delete contents of a directory recursively on Windows

我需要刪除目錄的全部內容(嵌套文件夾和所有內容)而不刪除目錄本身。 在事實之后重新創建目錄不是一個選項,因為它正在被正在運行的進程鎖定並且刪除它將失敗。

到目前為止,我有以下內容:

rd /s /q dir1
rd /s /q dir2
rd /s /q dir3
del /q /f *

它工作正常,但顯而易見的問題是,每次第一級目錄集更改時,我都必須更新此腳本。

在UNIX上,我會像這樣解決這個問題:

rm -rf *

什么是Windows等價物?

假設您正在從頂級目錄執行命令:

for /d %X in (*.*) do rd /s /q %X

如果從腳本執行此操作,則必須使用雙百分號:

for /d %%X in (*.*) do rd /s /q %%X

如果您還需要刪除頂級目錄中的文件,請將其添加到腳本中:

del /q /f *

我知道這是一個陳舊的問題,舊答案,但我找到了一種更簡單的方法,並想到分享它。

您可以進入目標目錄並使用rd命令。 由於Windows不允許您刪除當前正在使用的任何文件或目錄,並且您通過插入目標目錄來使用目標目錄,因此除了目標目錄本身之外,您將刪除所有內容。

cd mydir
rd /s /q .

你會收到一條消息說:

該進程無法訪問該文件,因為該文件正由另一個進程使用。

當刪除所有內容后, rd命令無法刪除當前目錄,因為您正站在其中,這將發生這種情況。 但是如果你回顯最后一個退出代碼,你會發現這不是一個實際的錯誤,它將是0

echo %errorlevel%
0

這就是我正在使用它並且它工作正常。 我希望這有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM