开发者

Windows batch script to delete everything in a folder except one

开发者 https://www.devze.com 2023-01-02 17:35 出处:网络
Ihave a script to delete all subfolders and files in a folder: FOR /D %%i IN (\"D:\\myfolder\\*\") DO RD /S /Q \"%%i\" & DEL /Q \"D:\\myfolder\\*.*\"

I have a script to delete all subfolders and files in a folder:

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

And it works great! Only problem is th开发者_如何学Cat I would like to exclude one or more folders, like the XCOPY exclude feature.

I just cant figure how I could add that to the script.


You could try to hide the folders before the for-loop, and unhide them afterwards, like this:

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


there needs to be an & just between "%%i" and DEL or else it will delete folders but not files.


Here is a way that does not touch the excluded file and/or directory, so no attributes are altered:

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
0

精彩评论

暂无评论...
验证码 换一张
取 消