Страница 4 из 6
Добавлено: Чт июл 19, 2018 21:03
imig73
Lisabon
У меня UAC тоже включен и никаких ошибок не вижу. Срипт не обязательно запускать от админа, он и так работает при обычном запуске из Exporer.
Добавлено: Чт июл 19, 2018 22:03
Lisabon
imig73
не обязательно запускать от админа
Не обязательно, но... Если запустить от админа, то ошибка есть, а если не запускать от админа, то ошибки - нет. Это на Win 7.
Для Vista... Если не запускать от админа, то ошибка:
Код: Выделить всё
Сценарий: C:\EmptyRecycleBin.vbs
Строка: 13
Символ: 3
Ошибка: Неопознанная ошибка
Код: 80004005
Источник: (null)
Если запустить от админа, то ошибка:
Код: Выделить всё
Сценарий: C:\EmptyRecycleBin.vbs
Строка: 12
Символ: 1
Ошибка: Невозможно создание объекта контейнером ActiveX: 'GetObject'
Код: 800A01AD
Источник: Ошибка выполнения Microsoft VBScript
Добавлено: Чт июл 19, 2018 22:15
imig73
Lisabon
Ах Vista, ну тада не знаю у меня её нету и не могу протестировать. На 7, 8 и 10 любой разрядности ошибок нет, хоть как запускай...
Добавлено: Чт июл 19, 2018 23:33
Skif_off
Как-то это странно, держать целую утилиту или скрипт для очистки корзины, не? С NirCmd понятно - утилиту можно использовать не только для этого.
Очистка корзины на AutoIt, одной командой:
Код: Выделить всё
"%COMMANDER_PATH%\AutoIt3.exe" /AutoIt3ExecuteLine "FileRecycleEmpty()"
Очистка корзины конкретного диска, пусть будет D:
Код: Выделить всё
"%COMMANDER_PATH%\AutoIt3.exe" /AutoIt3ExecuteLine "FileRecycleEmpty('D:\')"
Хотя есть нюанс: требуется наличие IE4+.
Добавлено: Пт июл 20, 2018 00:12
imig73
Skif_off писал(а):Как-то это странно, держать целую утилиту или скрипт для очистки корзины, не?
Наверное всё же "не", ведь autoit3.exe это тоже утилита 732,7 KB, ИМХО скрипт на 993 байта выглядит практичней. Если уж утилита, то тогда RecycleNOW на 20 KB. Конечно если есть куча полезных скриптов для autoit, то и вопросов нет.
Добавлено: Пт июл 20, 2018 00:27
Flasher
Skif_off писал(а):С NirCmd понятно
Что понятно? Это?

:
imig73 писал(а):nircmd утилита годная и много чего умеет, но не для тотала она у меня
Про FileRecycleEmpty (в т. ч. в AHK) я прекрасно знал, но мне было даже стыдно такое предлагать, навязывая интерпретатор, в 1000 раз больший, чем скрипт...
imig73 писал(а):это тоже утилита 732,7 KB
Последняя x32 = 875 Кб и x64 = 990 Кб.
imig73 писал(а):то тогда RecycleNOW на 20 KB.
rbc вообще 10 Кб весит.

Добавлено: Пт июл 20, 2018 06:06
Skif_off
imig73 писал(а):Наверное всё же "не", ведь autoit3.exe это тоже утилита
Естественно, нет смысла брать AutoIt ради одной команды очистки корзины и пример на AutoIt связан не с первым вопросом, а названием темы и с "утилиту можно использовать
не только для этого".
У меня скриптов десятка 3 точно и, думаю, я не одинок. Или: количество скачиваний TCIMG с сайта wincmd.ru 237361, заодно пробуем
Код: Выделить всё
"%COMMANDER_PATH%\TCIMG\TCIMG.exe" /AutoIt3ExecuteLine "FileRecycleEmpty()"
Работает. И понятно, почему. Запуск любого скрипта:
Код: Выделить всё
"%COMMANDER_PATH%\TCIMG.exe" /AutoIt3ExecuteScript "%COMMANDER_PATH%\Utils\DontSleep.au3"
Т.е. если уже есть, зачем тянуть что-то ещё, на 20 КБ, 10 КБ или даже 993 Б?
Flasher писал(а):я прекрасно знал, но мне было даже стыдно такое предлагать
Как-по мне, не стыдно озвучить все варианты, как ты нередко делаешь.
Добавлено: Пт июл 20, 2018 08:10
imig73
Skif_off
Юзер сам решит что ему надо, ваш совет с Autoit имеет право на жизнь + 30 скриптов к нему. Вот у меня есть Autoit и 1 скрипт по замене текста в файлах по нескольким полям, но не пригодился за 2 года ни разу, теперь уберу вместе с интерпретатором.
Касаемо TCIMG, здесь вообще его возможности зашкаливают, но размер в почти 15 MB мне однозначно не нужен, как и сами его функции. Помню на ру-борде в теме по сборкам, сборки на 2,36GB(!) со всяким говном, и не впечатляет утилита эта такого размера с кучей не нужного в работе барахла, которое создатель запихал в 1 exe.
993 Б тянуть не надо, им пользуешся уже второй день и не замечаешь его совсем.
Варианты нужно озвучить все, против никто не будет и как уже написал "Юзер сам решит что ему надо".
Добавлено: Пт июл 20, 2018 09:36
Flasher
Skif_off
Я смотрю, ты в провокаторы заделался. Есть ряд скриптовых языков, но ты из них всех тянешь именно AutoIt и выдаёшь его с позиции, что лучше для остальных. И кому тут интересно какое-то липовое кол-во скачиваний, из которого в лучшем случае 0.0005% реальных пользователей?
Спецом для тебя.
Skif_off писал(а):Т.е. если уже есть, зачем тянуть что-то ещё, на 20 КБ, 10 КБ или даже 993 Б?
Если есть. А если нет? Ты сам понимаешь, что это глупый вопрос, в котором сравниваемое может быть переставлено местами? Ты понимаешь, что то, о чём ты пишешь, это пакет из 100+ файлов, которые тоже надо "тянуть"? (рит.)
Skif_off писал(а):как ты нередко делаешь.
Приведи хоть один пример. Тебя за язык никто не тянул.
Хочешь заняться публикацией всех решений, так вперёд. Есть ещё по меньшей мере 100 вариантов на всяких языках. Ждём твоих изысканий.
Добавлено: Пт июл 20, 2018 15:06
CaptainFlint
Перепалку прекращаем. Альтернативные решения в разумных пределах предлагать не возбраняется, а кому надо, будет сам выбирать, какие из вспомогательных инструментов ему влом скачивать, а какие не влом.
Добавлено: Пт июл 20, 2018 17:15
Flasher
Lisabon
Тогда так:
Код: Выделить всё
'====== VBS ======
' Очистить корзину
'===== Flasher © =
Option Explicit: Dim RBin, Old, Par, Str, i, L, Title, A
Set RBin = CreateObject("Shell.Application").NameSpace(10)
With CreateObject("Scripting.FileSystemObject")
Old = .GetFileVersion(.GetSpecialFolder(1) & "\shell32.dll") < "6.0.6"
If Old Then Par = 625 : Str = 6 Else Par = 1050 : Str = 8
If RBin.Items.Count = 1 Then
If .FileExists(RBin.Items.Item(0).Path) Then
If Old Then Par = 1042 : Str = 9 Else Par = 1055 : Str = 13
Else
If Old Then Par = 1043 : Str = 3 Else Par = 1056 : Str = 4
End If
End If
End With
RBin.Self.InvokeVerb "Empty"
With CreateObject("CDO.Message").AddAttachment("res://shell32.dll/6/" & Par).GetDecodedContentStream
.Type = 1
For i = 0 To Str
L = AscB(.Read(2)) * 2 : If L > 0 Then Title = CStr(.Read(L))
Next
End With
With CreateObject("WScript.Shell")
Do : A = .AppActivate(Title) : Loop Until A
WSH.Sleep 10 : .SendKeys "~"
End With
While RBin.Items.Count : WSH.Sleep 400 : Wend
Set RBin = Nothing
Либо:
Код: Выделить всё
'=================
' Очистить корзину
'=================
Set RBin = CreateObject("Shell.Application").Namespace(10)
With CreateObject("Scripting.FileSystemObject")
While RBin.Items.Count
Path = .GetParentFolderName(RBin.Items.Item(0).Path)
.DeleteFolder Path & "\*", 1 : .DeleteFile Path & "\*", 1
Wend
End With
Set RBin = Nothing
Добавлено: Пт июл 20, 2018 20:58
Lisabon
Flasher
Тогда так:
На Win XP выскакивает стандартное окно подтверждения очистки корзины. Это окно висит и ждёт выбора пользователя. Если нажать нет, то выскакивает ошибка:
Код: Выделить всё
Сценарий: C:\EmptyRecycleBin.vbs
Строка: 9
Символ: 1
Ошибка: Указанное имя ресурса не найдено в файле образа.
Код: 80070716
Источник: CDO.Message.1
Если нажать да, то корзина очищается, но через некоторое время выскакивает, выше указанная ошибка.
Нужен ли чтобы в системе установлен какой-то компонент?
С другими операционками, проблем пока не увидел.
Добавлено: Пт июл 20, 2018 21:11
imig73
Flasher
Да, скрипт на этой странице без PS ещё более универсален и работает на XP и 2k3 с оговорками. Выдаётся запрос на удаление, корзина очищается и выдаётся ошибка
которую просто закрываю. На 7, 8 и 10 ошибок и вопросов нет.
Добавлено: Пт июл 20, 2018 21:16
Flasher
Lisabon
imig73
Cкиньте свои %WinDir%\SYSTEM32\ru-RU\shell32.dll.mui.
В т. ч. для 2k3.
imig73
См. п. 2 снизу.
imig73 писал(а):На 7-ке х32 и XP x32 скрипт отрабатывает без нареканий
А теперь с оговорками?

Добавлено: Пт июл 20, 2018 23:15
imig73
Flasher
У меня в XP и 2k3 в System32 нет файла shell32.dll.mui (Версии ОС изначально русские).
Flasher писал(а):А теперь с оговорками
Не совсем понял

Скрипт без PS с этой страницы универсальней и работает везде хорошо, кроме недочёта описанного мной для XP и 2k3 и
Lisabon выше.
p.s. Отвечать довольно сложно, сайт постоянно падает и глючит...