Удалить папку $recycle.bin во всех папках
Нужна помощь здесь, пожалуйста...
нужен скрипт, желательно пакетный скрипт для удаления папки $recycle.bin во всех подпапках.
У меня есть диск, на котором у меня есть пользовательские папки, и у каждой пользовательской папки есть своя собственная папка $recycle.bin.
Structure on Drive C:\
User1 > $recycle.bin
User2 > $recycle.bin
User3 > $recycle.bin
Когда пользователь удаляет что-то в своем профиле, он отправляет в c:\user1\$recycle.bin. На данный момент я захожу в каждую папку отдельно, чтобы удалить $recycle.bin.
1 ответ
Используйте этот более или менее однострочный пакетный файл с путем к папке C:\
быть замененным реальным путем к родительской папке:
@echo off
for /F %%D in ('dir "C:\$recycle.bin" /AD /B /S 2^>nul') do rd /Q /S "%%D" 2>nul
Командная строка выше ищет папку $recycle.bin
рекурсивно во всех каталогах диска C: и удаляет каждый найденный $recycle.bin
,
Существует также второе решение, которое работает быстрее, поскольку сначала выполняется поиск только скрытых папок в корневом каталоге диска C: (папка пользователя) и поиск следующей папки в каждой папке (пользователя) для поиска папки. $recycle.bin
который удаляется, если такая подпапка действительно находится в папке пользователя.
@echo off
for /D %%U in ("C:\*") do (
for /F %%D in ('dir "%%U\$recycle.bin*" /AD /B 2^>nul') do rd /Q /S "%%U\%%D" 2>nul
)
Третье решение использует второе решение без поиска $recycle.bin
в папке пользователя и вместо этого просто предположим, что такая папка есть, и удалите ее. Если подпапка корня диска C: не имеет папки $recycle.bin
сообщение об ошибке выводится командой RD, но это сообщение об ошибке подавляется, как описано ниже.
@echo off
for /D %%D in ("C:\*") do rd /Q /S "%%D\$recycle.bin" 2>nul
Чтобы понять используемые команды и то, как они работают, откройте окно командной строки, выполните там следующие команды и полностью прочитайте все страницы справки, отображаемые для каждой команды.
dir /?
echo /?
for /?
rd /?
См. Также статью Microsoft Использование операторов перенаправления команд для объяснения 2>nul
,
Сообщение об ошибке, выводимое командой DIR в STDERR при отсутствии папки с именем $recycle.bin
подавляется перенаправлением сообщения об ошибке на устройство NUL с помощью 2>nul
, Оператор перенаправления >
должен быть сброшен с ^
применяется при выполнении команды DIR вместо того, чтобы интерпретироваться как перенаправление команды FOR, указанной в недопустимом положении, что приведет к завершению обработки команды из-за синтаксической ошибки.
2>nul
также используется в команде RD для подавления вывода сообщения об ошибке в любой папке или файле внутри папки, которая в данный момент используется пользователем, и, следовательно, удаление папки завершается неудачно. В третьем решении это также подавляет сообщение об ошибке, если нет папки $recycle.bin
совсем.