Пакетный скрипт Windows для удаления всего в папке, кроме одного - PullRequest
11 голосов
/ 09 июня 2010

У меня есть скрипт для удаления всех подпапок и файлов в папке:

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

И он прекрасно работает!Единственная проблема заключается в том, что я хотел бы исключить одну или несколько папок, например функцию исключения XCOPY.

Я просто не могу понять, как я могу добавить это в сценарий.

Ответы [ 3 ]

17 голосов
/ 09 июня 2010

Вы можете попытаться скрыть папки перед циклом 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
0 голосов
/ 02 сентября 2016

Вот способ, который не касается исключенного файла и / или каталога, поэтому никакие атрибуты не изменяются:

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 голосов
/ 07 августа 2014

должен быть символ & только между "%% i" и DEL, иначе он удалит папки, но не файлы.

...