2016-06-16 3 views
-1

нужно немного помочь здесь, пожалуйста ...

нужен сценарий предпочтительно пакетного сценария для удаления папки $ recycle.bin во всех вложенных папок.

У меня есть диск, где у меня есть пользовательские папки, и в каждой папке пользователя есть своя папка $ recycle.bin.

Structure on Drive C:\ 
User1 > $recycle.bin 
User2 > $recycle.bin 
User3 > $recycle.bin 

Когда пользователь удаляет что-то на своем профиле, то он посылает в C: \ user1 \ $ recycle.bin. На данный момент я отправляюсь в каждую папку отдельно, чтобы удалить $ recycle.bin.

+2

Напишите сценарий самостоятельно, а затем вернитесь сюда, когда он не работает. – SomethingDark

ответ

0

Используйте это более или менее одной строки пакетного файла с пути к папке 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 Using command redirection operators для объяснения 2>nul.

Вывод сообщения об ошибке по команде DIR к STDERR на не находя папку с именем $recycle.bin подавляется перенаправлять сообщение об ошибке на устройство NUL с 2>nul. Оператор перенаправления > должны быть экранированы с ^ для нанесения на выполнение команды DIR вместо того, чтобы интерпретировать как перенаправление команды FOR указанного в недопустимом положении, которое привело бы к выходу обработки команд из-за ошибки синтаксиса.

2>nul также используется по команде RD подавить вывод сообщения об ошибке на любую папку или файл в папке в настоящее время используется пользователем и, следовательно, удаление папки не удается. В третьем решении оно также подавляет сообщение об ошибке, если нет папки $recycle.bin.