1

У меня есть следующая структура файла

Parent\Deploy                 (folder)
Parent\Deploy\.svn            (hidden folder)
Parent\Deploy\.svn\file1      (regular file)
Parent\Deploy\.svn\file2      (regular file)
Parent\Deploy\.svn\file3      (regular file)
Parent\Deploy\file4           (regular file)
Parent\Deploy\file5           (regular file)
Parent\Deploy\file6           (regular file)
Parent\Deploy\Something       (regular folder)
Parent\Deploy\Something\file7 (regular file)

Допустим, я сейчас нахожусь в C:\Parent, и я хотел бы удалить все файлы 4,5,6,7, используя команду DEL.

Вот моя попытка:

1) DEL /f /q /s .\Deploy 
2) DEL /f /q /s /A:-H .\Deploy 

Но это также удаляет файлы в скрытом .svn. Второй исключает только файлы, которые скрыты, но файлы 1-3 являются "нормальными", поэтому он все равно удаляет их.

1 ответ1

1

Как рекурсивно удалить все файлы, кроме тех, которые находятся в скрытых каталогах?

Используйте следующий пакетный файл:

@echo off
setlocal enableDelayedExpansion
rem walk file tree, 1/ finding non-hidden directories then 2/ finding files.
rem 1/ find non-hidden directories
for /f "usebackq tokens=*" %%i in (`dir /b /s /a:d-h`) do (
  rem 2/ find and delete files
  echo Processing directory: %%i
  for /f "usebackq  tokens=*" %%j in (`dir /b /a:-d %%i 2^> nul`) do (
    echo Processing file: %%i\%%j
    del /f /q "%%i\%%j"
    )
  )

Дальнейшее чтение

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .