[英]How to delete files recursively
我有目錄結構/ foo / bar / fooBar /。 我想編寫一個Windows命令,在其中我可以提到直到foo目錄的路徑,並且它以遞歸方式刪除/ foo中的所有文件和目錄,但不應刪除foo目錄。
我一直在使用rmdir /q /s [path to foo]
但是此命令也會刪除foo目錄。 讓我知道是否有任何命令可以完成此操作。
rd /s /q /path/to/foo
md /path/to/foo
del /f /s /q DirectoryWhichContainsFilesToDelete/\*
這將刪除文件夾DirectoryWhichContainsFilesToDelete
中的所有文件,而不會刪除文件夾本身。 玩得開心 :)
我也一直在撓這個頭。 創建一個使用rmdir的for循環很容易,但是它留下了在長名稱中帶有空格的文件夾。 可以操作目錄列表並獲取8.3文件名,但是這是一個更簡單的解決方案。
然后創建一個空文件夾;
robocopy \empty_folder \folder_with_sub_folders /PURGE
所有子文件夾和文件將被刪除。
del X /f /s /q
rd X /s /q
但這會刪除ROOt目錄。 再做一次
md X
或先制作一份。
否則,您將不得不進行批處理時髦
dir X /ad /b
將為您提供X的直接子目錄的列表。您可以計算其余的
我一直在尋找一個簡單的命令來遞歸刪除目錄中的所有文件,但保持目錄結構不變。 因此,也許這可能很有趣;)
for /f "delims=" %i in ('dir /B /S /A:-DH') do @del /F /Q /A:H "%i"
命令“ dir / B / S / A:-D”遞歸僅列出當前目錄中的文件(/ A:-D),而沒有“ dir”摘要報告(/ B)。 “ for”循環遍歷每行(/ delims =),並強制和安靜地執行刪除命令。 我還使用了隱藏標志(/ H)列出和刪除了一些神秘的文件(例如thumbs.db)。
嘗試使用Powershell:
powershell -Command "Remove-Item '\foo\*' -Recurse -Force"
deltree / foo / *應該可以正常工作。
我過去曾在批處理文件中使用過它。 它使用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
為了防止刪除foo目錄,請嘗試在刪除之前將目錄更改為foo,例如:
cd c:\\ foo rd / s / qc:\\ foo
這將刪除foo下的所有文件和文件夾,但不刪除foo。 將顯示一條錯誤消息,內容如下:“該進程無法訪問該文件,因為該文件正在被另一個進程使用。”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.