簡體   English   中英

Windows批處理腳本刪除文件夾中的所有內容,但不包括一個

[英]Windows batch script to delete everything in a folder except one

我有一個腳本刪除文件夾中的所有子文件夾和文件:

FOR /D %%i IN ("D:\myfolder\*") DO RD /S /Q "%%i" & DEL /Q "D:\myfolder\*.*"

而且效果很棒! 唯一的問題是我想排除一個或多個文件夾,例如XCOPY排除功能。

我只是想不出如何將其添加到腳本中。

您可以嘗試在for循環之前隱藏文件夾,然后取消隱藏它們,如下所示:

ATTRIB +H D:\myfolder\keepit
FOR /D %%i IN ("D:\myfolder\*") DO RD /S /Q "%%i" DEL /Q "D:\myfolder\*.*"
ATTRIB -H D:\myfolder\keepit

需要有一個&只是在“%% i”和DEL之間,否則它將刪除文件夾但不刪除文件。

這是一種不觸及排除文件和/或目錄的方法,因此不會更改任何屬性:

rem // Change to target directory (skip if not found):
pushd "D:\Data" || exit /B 1
rem // Iterate through all subdirectories:
for /D %%D in ("*") do (
    rem // Exclude a certain subdirectory:
    if /I not "%%~nxD"=="ExcludeDir" rd /S /Q "%%~D"
)
rem // Iterate through all immediate files:
for %%F in ("*") do (
    rem // Exclude a certain file:
    if /I not "%%~nxD"=="ExcludeFile.txt" del "%%~F"
)
popd

暫無
暫無

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

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