1 (изменено: Yurachb, 2021-10-27 03:44:56)

Тема: VBS: Очистка корзины

\

2

Re: VBS: Очистка корзины

А так:

CreateObject("Shell.Application").NameSpace("shell:RecycleBinFolder").Self.InvokeVerb("Empty")

?

3 (изменено: Flasher, 2013-06-18 11:13:17)

Re: VBS: Очистка корзины

RecycleNOW
Recycle Bin Cleaner /h /c /p /a
EmptyRecycleBin /Q
nircmd  emptybin

4

Re: VBS: Очистка корзины

OFF:

wisgest пишет:

А так:

Запрос на подтверждение, наверное, не нравится .

Кстати, как можно узнать такого рода канонические глаголы (я не про «for each … in .verbs» — там локализованные имена)?

5

Re: VBS: Очистка корзины

alexii пишет:

Запрос на подтверждение, наверное, не нравится .

В данном случае должен бы понравиться:

Yurachb пишет:
q=MsgBox(chr(13)+"Очистить корзину?",36,"                             КОРЗИНА")
If q=6    Then
alexii пишет:

Кстати, как можно узнать такого рода канонические глаголы (я не про «for each … in .verbs» — там локализованные имена)?

Меня этот вопрос тоже весьма занимает, помнится, я даже его хотел как нибудь задать. В данном случае я просто угадал.

6

Re: VBS: Очистка корзины

wisgest пишет:

В данном случае должен бы понравиться:

Я не про то. Про это:

http://img812.imageshack.us/img812/2590/89i.png

wisgest пишет:

Меня этот вопрос тоже весьма занимает, помнится, я даже его хотел как нибудь задать. В данном случае я просто угадал.

Спасибо, ясно. Жаль.

P.S. Если что ещё интересное угадаете — пишите.

7

Re: VBS: Очистка корзины

Вопрос, думаю, многих интересует. Я в своё время плюнул на поиски и остановился на Doit:

CreateObject("Shell.Application").NameSpace(&Ha&).Items.Verbs.Item(2).DoIt

8

Re: VBS: Очистка корзины

Flasher, номер может меняться. Можно тупо перебирать, пока не найдётся вариант «О&чистить корзину», затем выполнить его (в данном случае, разумеется, можно прямо использовать найденный коллегой wisgest глагол «"Empty"»).

9

Re: VBS: Очистка корзины

У меня он не срабатывает (в отличии от моего примера).
Да, вероятно, в некоторых случаях номер может меняться, если править расширения оболочки через реестр: HKCR\CLSID\{645FF040-5081-101B-9F08-00AA002F954E}\shell\.
Но это крайние случаи. А вот shell:RecycleBinFolder в XP по всей логике не заработает.

10

Re: VBS: Очистка корзины

У меня он не срабатывает

У Вас какая ОС? У меня пример коллеги wisgest работает.

А вот shell:RecycleBinFolder в XP по всей логике не заработает.

У меня работает. Как раз Windows XP SP3: WSH: перечень предопределённых символьных имён Shell.Application — Серый форум.

11 (изменено: Flasher, 2013-06-18 01:27:08)

Re: VBS: Очистка корзины

alexii пишет:

У Вас какая ОС?

Win 7 x32 в текущий момент.

Команды shell:, НСЯП, работать начали с Висты, отсюда такая мысль..

А, вообще понятно почему не работает. Нужно так:

With GetObject("new:{C08AFD90-F2A1-11D1-8455-00A0C91F3880}")
  .document.Application.NameSpace("shell:RecycleBinFolder").Self.InvokeVerb("Empty")
  .Quit
End With

12

Re: VBS: Очистка корзины

Команды shell:, НСЯП, работать начали с Висты, отсюда такая мысль..

Гораздо раньше .

Нужно так:

У меня, на Windows XP, порождает ошибку при попытке обращения к «.document».

13

Re: VBS: Очистка корзины

Странно. Тут на XP проверяли.

14

Re: VBS: Очистка корзины

Сам объект создаётся:

Option Explicit

Dim objWebBrowser
Dim objDocument

Set objWebBrowser = GetObject("new:{C08AFD90-F2A1-11D1-8455-00A0C91F3880}")
WScript.Echo TypeName(objWebBrowser)

Set objDocument = objWebBrowser.document
WScript.Echo TypeName(objDocument)

WScript.Quit 0

Ошибка при попытке обращения к «.document».

15 (изменено: wisgest, 2013-06-18 08:04:02)

Re: VBS: Очистка корзины

Flasher пишет:

А вот shell:RecycleBinFolder в XP по всей логике не заработает.

Проверял на XP SP3. Насколько помню " shell:RecycleBinFolder" работало в SP1, "Empty" в XP SP1 пока проверить не могу, т.к. нахожусь вне дома, смогу проверить через пару недель.

Flasher пишет:

А, вообще понятно почему не работает. Нужно так

В таком случае совсем не так - WebBrowser здесь не причём:

CreateObject("Shell.Application").NameSpace("::{645FF040-5081-101B-9F08-00AA002F954E}").Self.InvokeVerb "Empty"

(

alexii пишет:

У меня, на Windows XP, порождает ошибку при попытке обращения к «.document».

Естественно, чтобы был .Document нужен Navigate().)

16 (изменено: Flasher, 2013-06-18 13:32:29)

Re: VBS: Очистка корзины

wisgest пишет:

В таком случае совсем не так - WebBrowser здесь не причём:

Да вот нет. Та же песня. Работает только через GetObject("new:, иначе по закрытию скрипта схлопывается.

wisgest пишет:

Естественно, чтобы был .Document нужен Navigate().

У меня работает без него.

Вариант без окна запроса:

With CreateObject("Scripting.FileSystemObject")
For Each i in CreateObject("Shell.Application").NameSpace(&Ha&).Items
  If i.Type = "File folder" Then .DeleteFolder(i.Path) Else .DeleteFile(i.Path)
Next : End With

А ещё лучше так:

Set Items = CreateObject("Shell.Application").Namespace(&Ha&).Items
If Items.Count > 0 Then
  With CreateObject("Scripting.FileSystemObject")
    Path = .GetParentFolderName(Items.Item(0).Path)
    .DeleteFolder Path & "\*", 1 : .DeleteFile Path & "\*", 1
  End With
End If

17 (изменено: Yurachb, 2021-10-27 03:44:15)

Re: VBS: Очистка корзины

\

18

Re: VBS: Очистка корзины

alexii пишет:

Flasher, номер может меняться. Можно тупо перебирать, пока не найдётся вариант «О&чистить корзину», затем выполнить его…

Номер, однозначно, может меняться (у меня, как ни странно, по действию #2 для Корзины будет запущен Far Manager), но ничего перебирать не надо — оказывается, ShellFolderItem.InvokeVerb() принимает и локализованные названия действий (надо только не забывать, что они могут содержать амперсанд).

19

Re: VBS: Очистка корзины

Локализованое название лишь немного универсальнее номера действия: привязка не к расширениям оболочки, а к языку интерфейса. В отличие от Empty.