簡體   English   中英

如何遞歸刪除文件

[英]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.

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