Стереть файлы в папке или папку - "Permission denied"

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
giaber
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 108
Зарегистрирован: 14.01.2009 (Ср) 13:51

Стереть файлы в папке или папку - "Permission denied"

Сообщение giaber » 14.12.2017 (Чт) 20:08

Пытался разными способами стереть файлы в папке кэша Файрфокса(папка "entries") или саму папку с содержимым:
"C:\Users\Администратор\AppData\Local\Mozilla\Firefox\Profiles\m32l11qm.default\cache2\entries"

Выдаёт "Permission denied". Понимаю, что некоторые файлы в этот момент находятся в использовании Файрфоксом.
Как стирать файлы в папке или папку с файлами независимо от того, используются или нет они другой прогой?

qwertyhp
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 156
Зарегистрирован: 07.10.2009 (Ср) 15:02
Откуда: Москва

Re: Стереть файлы в папке или папку - "Permission denied"

Сообщение qwertyhp » 14.12.2017 (Чт) 21:17

У меня работает такой код (то, что не удаляется с первого прохода, удаляется позднее. Кстати - можно запихнуть код в таймер, а саму форму скрыть - тогда папка будет опорожняться в фоновом режиме периодически и самопроизвольно):

Код: Выделить всё
Private Sub Form_Load()
    On Error Resume Next
    Kill "c:\Documents and Settings\USER\Local Settings\Application Data\Mozilla\Firefox\Profiles\bae55qx3.default\cache2\entries\*.*"
    DoEvents
    End
End Sub
Пятачок Forever! :)

giaber
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 108
Зарегистрирован: 14.01.2009 (Ср) 13:51

Re: Стереть файлы в папке или папку - "Permission denied"

Сообщение giaber » 14.12.2017 (Чт) 23:24

Попробовал всякие варианты. Через FSO из 300 файлов в папке остаётся 270-280, ваш вариант - оставляет 70-80 файлов, а вот вариант:
Код: Выделить всё
Dim sPathToRemove$
sPathToRemove = "C:\Users\Администратор\AppData\Local\Mozilla\Firefox\Profiles\m32l11qm.default\cache2\entries"
Shell "cmd /c rd /S/Q """ & sPathToRemove & """"

оказался рекордсменом -и из даже 650 файлов тоже 2 шт оставил только.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Стереть файлы в папке или папку - "Permission denied"

Сообщение Хакер » 14.12.2017 (Чт) 23:34

qwertyhp писал(а):У меня работает такой код (то, что не удаляется с первого прохода, удаляется позднее.

Какой позорный код :(

giaber писал(а):Выдаёт "Permission denied". Понимаю, что некоторые файлы в этот момент находятся в использовании Файрфоксом.
Как стирать файлы в папке или папку с файлами независимо от того, используются или нет они другой прогой?

В общем случае — никак. В частном случае (если хватит прав доступа) есть грязный трюк, которым пользуется программа Unlocker: выяснять, какой процесс имеет хендл открытого файла и открыл его с маской прав доступа, запрещающей удаление, внедряться в эти процессы и принудительно закрывать. В процессах-жертвах это приведёт к непредсказуемым результатам.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

giaber
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 108
Зарегистрирован: 14.01.2009 (Ср) 13:51

Re: Стереть файлы в папке или папку - "Permission denied"

Сообщение giaber » 15.12.2017 (Пт) 0:11

2 Хакер
Как я понимаю программа (Firefox) вероятней всего закроется что меня не устраивает - я должен именно с ней продолжать работать
Ну ладно что поделаешь в принципе если останется до десятка файлов это не страшно - парсить надо от 500 до 1000 файлов из этой папки для вытаскивания линков, так что десяток - другой не катастрофично.

Опять мне приходится дебильным способом решать задачу. Суть такая:
Мне часто надо скачивать ВСЕ картинки с какой-нибудь странички на Pinterest. При загрузке страницы в папке C:\Users\Администратор\AppData\Local\Mozilla\Firefox\Profiles\m32l11qm.default\cache2\entries создаются файлы, в каждом из которых есть ссылка на адрес картинки-превью (на этой страничке отображаются превьюшки). Но мне нужны ссылки на картинки оригинального размера. В каждой ссылке есть такой кусок: "/256x/". Оказывается, если заменить это на "/originals/" то получаем ссылку на картинку оригинального размера. Во всяком случае у Pinterest сейчас так - проверял. Так вот, поскольку те 2-3 аддона, которые существуют массового скачивания с Pinterest, у меня на компе совершенно не работают, я решил сделать так:
1. очищаю папку от содержимого (там сотни файлов, не имеющих отношения к нужной странице)
2. загружаю в Файрфоксе нужную мне страницу - в папке создаются файлы со ссылками на превью-картинки
3. Считываю содержимое всех файлов (скажем в Listbox или в RichTextBox или в Textbox multiline?)
4. Вычленяю ссылки
5. делаю замену "/256x/" на "originals"
6. отправляю все ссылки в Clipboard
7. DownloadMaster автоматом перехватывает содержимое Clipboard и записывает все картинки в заранее указанную папку

Уф-ф-ф-ф... Уродство и извращение. Но ничего другого я не могу придумать.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Стереть файлы в папке или папку - "Permission denied"

Сообщение Mikle » 15.12.2017 (Пт) 9:03

giaber писал(а): очищаю папку от содержимого (там сотни файлов, не имеющих отношения к нужной странице)

Зачем? Можно же просто фильтровать файлы текущего сеанса по времени создания.

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Re: Стереть файлы в папке или папку - "Permission denied"

Сообщение ALX_2002 » 15.12.2017 (Пт) 9:40

giaber, а готовые инструменты типа Pinterest Downloader чем не подошли ?

giaber
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 108
Зарегистрирован: 14.01.2009 (Ср) 13:51

Re: Стереть файлы в папке или папку - "Permission denied"

Сообщение giaber » 15.12.2017 (Пт) 13:27

2 ALX_2002
Спасибо за подсказку! Потратил час на осваивание этой проги, но не могу сказать ничего - не удалось сделать ни одного "движения". Находит пользователя, показывает сколько у него пинов, фоловеров, но ни одной картинки не показывае и не скачивает. Собственно ничего не происходит вообще, интерфейс с моей точки зрения неудобный, идеология непонятна. Вообще, считаю, что если пользователь имеющий опыт общения с компом ещё с синклеровского спектрумовского ассемблера, худо-бедно программирующий на VB, очень неплохо знающий Корел, рисующий в Риноцерос, и прочая, и прочая, и прочая :))) короче 30 лет проведший с компом тратит час и не может сделать НИ ОДНОЙ вменяемой операции с прогой - такая прога МАСТ ДАЙ !
Но, ради бога, не примите претензию на свой счёт! Это я возмущаюсь исключительно автором этой проги, а вам большое спасибо за попытку помочь! В конце концов всем не угодишь!
Но зато, сподвинутый вашей подсказкой, я нашёл платный вариант - Pindownloader. Ссылку не умею прицеплять - просто добавьте к названию".com". Вменяемая прога, имхо. 10 баксов-небольшая цена, если сам не добью своё - куплю.

Mikle:"Зачем? Можно же просто фильтровать файлы текущего сеанса по времени создания"
Да, об этом не подумал!

***
В принципе, у меня всё заработало с моим идиотским подходом (описал выше), просто жуть сколько времени занимает - 55 файлов минуту делается, на 500-1000 файлов просто нереально.
И вторая проблема - файлы эти на самом деле jpg, просто у них убрано расширение и я не смог загружать их в Textbox, приходится делать RichTextBox1.LoadFile - это наверное заметно прибавляет время. Впрочем всё это бессмысленно, поскольку сам подход идиотский. Самое обидное, что все эти ссылки есть в коде самой страницы, но как их оттуда достать - не нахожу, в смысле достать не копи-пастом, а программно. Где-то же наверное хранятся загруженные в Firefox страницы ?

UPD
А нет! Ошибочка - в коде странички нет этих ссылок. Но вообще-то сам Firefox за секунду собирает и выдаёт все ссылки и выдаёт в отдельной вкладке (about:cache?storage=disk&context=). В заголовке написано:
Storage disk location: C:\Users\Администратор\AppData\Local\Mozilla\Firefox\Profiles\m32l11qm.default\cache2
Но поиск в инете так и не смог найти, как самому считать из этих файлов инфу - там кракозябры всякие.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 58

    TopList