Страница 1 из 1

Удаление скрытых файлов из командного файла

Добавлено: 01 мар 2013 17:33, Пт
UncleFather

Проблема:

Имеется скрипт, который должен удалять все содержимое (файлы и папки) из заданной директории.
Через некоторое время заметил, что некоторые файлы (например, Thumbs.db) не удаляются.

Оказалось, что команда

Код: Выделить всё

Del /F /S /Q C:\Temp\*

не удаляет файлы с атрибутом "системный". Именно поэтому файлы Thumbs.db не удалялись.

Решение:

Модифицируем команду удаления:

Код: Выделить всё

del /F /S /Q /A: SRHA C:\Temp\*

Теперь удалятся будут ВСЕ файлы из папки C:\Temp\ и вложенных в нее папок, в том числе с одним или несколькими атрибутами:

  • S - Системные файлы

  • R - Доступные только для чтения

  • H - Скрытые файлы

  • A - Файлы для архивирования

Примечание:

Заметил такую особенность: на некоторых версиях Windows нужно обязательно делать пробел между ключом "/A:" и его параметрами "SRHA" вот так: "/A: SRHA", на других же версиях синтаксис команды может быть без пробела: "/A:SRHA"

Альтернативный вариант:

Для удаления файлов с атрибутами, можно выполнять две команды. Первая снимает атрибуты, вторая - удаляет файлы. Например, так:

Код: Выделить всё

forfiles /p C:\Temp\ /s /m thumbs.db /C "cmd /c attrib -S -R -H -A @file &  DEL /F /S /Q @file"

Здесь, в параметрах команды DEL можно убрать ключ "/S", предназначенный для рекурсивной обработки, т.к. все равно команда forfiles будет перебирать все файлы по маске в заданной папке.