Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 27.11.2008, 22:23   #1
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию Чистим папку в ОС Виста

В ОС Vista папка "winsxs" занимает ~9,5 Гиг , то есть — половину занимаемого вистой места.
На Майкрософте написано, просто, что не рекомендуется ручное удаление файлов из этой папки. Из чего я делаю вывод, что что-то всё-таки можно почикать.
"winsxs" это хранилиже разных версий, общих библиотек. Каждая версия теперь имеет свой хэш, а в программе чётко прописано dll с каким именно хэшем нужна.
В принцине это помойка, если программа будет удалена, то библиотеки, которые она поставила в "winsxs" останутся там навсегда . Теоретически это всё можно почистить, но аккуратно.

Нужно сделать макрос, который удалял в этой папке, все папки:
за исключением тех, в именах которых присутствует comctl32.dll, GdiPlus.dll, msvcrt40.dll, msvcrt20.dll, msvcrt.dll, servicingstack, wrpintapi.dll, либо в этих папках содержатся такие файлы.

Последний раз редактировалось valerij; 28.11.2008 в 00:00.
valerij вне форума
Старый 27.11.2008, 22:37   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата с одного из сайтов:

Цитата:
В папке Winsxs в Windows Vista находятся различные версии динамических библиотек, требующихся для работы приложений. Для того, чтобы каждая программа имела доступ к нужной ей версии библиотеки. Если приложение пытается перезаписать системную библиотеку при установке, Windows сохраняет нужную ему версию в этой папке и впоследствии "подставляет" при работе приложения.

Данная папка постоянно увеличивается в размерах при установке новых приложений. Очистить папку Winsxs невозможно, так как это затруднит работу программ. Удалять оттуда файлы также опасно для работоспособности программ.
Так что лучше не удаляй.
Жесткие диски сейчас стоят недорого. Проще купи себе диск повместительнее...

Цитата:
На Майкрософте написано, просто, что не рекомендуется ручное удаление файлов из этой папки.
А чем автоматическое удаление файлов лучше?
Оно повлечёт те же проблемы, что и ручное удаление файлов...

Здесь написано очень много про эту папку...
Подумай ещё раз, прежде чем удалять файлы, назначение которых тебе доподлинно неизвестно.

А лучше установи себе WinXP И никаких проблем.


(добавлено)
Посмотри также макросы для обработки файлов,
и функцию для загрузки списка файлов в папке (с поиском в подпапках)

Последний раз редактировалось EducatedFool; 19.11.2011 в 00:24.
EducatedFool вне форума
Старый 27.11.2008, 23:01   #3
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
А лучше установи себе WinXP .
1. Хр и рядом не "валялось" с Вистой(конечно если висте сделать оптимизацию, у меня стоит 2-е ОСи)
2. Размер диска здесь не играет роли, у меня 2 х 250 гб, да и терять мне нечего, я всегда могу за 5 минут поставить все на зад,.

Просто хочу поэкспериментировать, а в ручную это хлопотно, вот и нужен мне макрос!

Поги-те!!
valerij вне форума
Старый 27.11.2008, 23:42   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
да и терять мне нечего, я всегда могу за 5 минут поставить все на зад,.
Удаляя файлы из папки Windows, можно поставить всё "на зад" гораздо быстрее 5 минут

Цитата:
Просто хочу поэкспериментировать, а в ручную это хлопотно, вот и нужен мне макрос!
А что хлопотно? Удалить одну папку? Или сначала выдернуть из неё несколько файлов, удалить из неё всё остальное, и поместить нужные файлы обратно? Макрос писать гораздо дольше... учитывая, что он должен удалять и заблокированные файлы тоже...

Тогда уж лучше сразу начинать эксперименты с удаления папки Windows...

Цитата:
Хр и рядом не "валялось" с Вистой
Несомненно, в Висте намного больше всяких украшательств

Последний раз редактировалось EducatedFool; 19.11.2011 в 00:25.
EducatedFool вне форума
Старый 27.11.2008, 23:54   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Но если уж так охота поудалять файлы... вот пример того, как это можно сделать.

Код:
Sub test()
    ' удаляет все файлы из всех подпапок в указанном каталоге
    ' остаются только пустые папки
    Delete_All_Files "C:\Documents and Settings\Администратор\Рабочий стол\Папка"
End Sub


Function Delete_All_Files(ByVal FolderPath As String)
    On Error Resume Next
    'Dim fso As FileSystemObject, curfold As Folder, fil As File, sfol As Folder
    Set fso = CreateObject("scripting.filesystemobject")
    Set curfold = fso.GetFolder(FolderPath)

    If Not curfold Is Nothing Then
        For Each fil In curfold.Files
            fil.Delete True
        Next
        For Each sfol In curfold.SubFolders
            Delete_All_Files sfol.Path
        Next
        Set fil = Nothing: Set curfold = Nothing: Set fso = Nothing:
    Else
        Debug.Print "Не удалось получить доступ к папке  " & FolderPath
    End If
End Function
EducatedFool вне форума
Старый 27.11.2008, 23:58   #6
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
А что хлопотно? Удалить одну папку? )
EducatedFool!
Нужно же выполнить условие п. #1, а не просто удалить, одну папку.
valerij вне форума
Старый 28.11.2008, 14:26   #7
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

EducatedFool!
Так мона это сделать?
valerij вне форума
Старый 28.11.2008, 14:51   #8
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Нужно же выполнить условие п. #1, а не просто удалить, одну папку.
Валера, ну неужели сложно изучить предложенный код и чуть-чуть его переделать?

Код:
Option Compare Text

Sub test()
    ' удаляет все файлы из всех подпапок в указанном каталоге
    ' остаются только пустые папки
    Delete_All_Files "C:\Documents and Settings\Администратор\Рабочий стол\Копия Копия Копия папка"
End Sub


Function Delete_All_Files(ByVal FolderPath As String)
    On Error Resume Next
    'Dim fso As FileSystemObject, curfold As Folder, fil As File, sfol As Folder
    Set fso = CreateObject("scripting.filesystemobject")
    Set curfold = fso.GetFolder(FolderPath)

    Application.StatusBar = "Обрабатывается папка  " & FolderPath

    If Not curfold Is Nothing Then
        For Each fil In curfold.Files
            Select Case True
                Case fil.Name Like "*.exe*"    ' не удаляем файлы, у которых имя соответствует этой маске
                Case fil.Name Like "*.xla*"    ' не удаляем файлы, у которых имя соответствует этой маске
                Case fil.Name Like "*.txt*"    ' не удаляем файлы, у которых имя соответствует этой маске
                Case Else: fil.Delete True    ' а все остальные удаляем
            End Select
        Next
        For Each sfol In curfold.SubFolders
            Delete_All_Files sfol.Path    ' удаляем файлы во всех подпапках этой папки
        Next
        Set fil = Nothing: Set curfold = Nothing: Set fso = Nothing:
    End If
End Function
Подставь там свои comctl32.dll вместо .exe в строки типа
Case fil.Name Like "*.exe*"

Таких строк может быть сколько угодно (не обязательно три)
EducatedFool вне форума
Старый 28.11.2008, 14:58   #9
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Валера, ну неужели сложно изучить предложенный код и чуть-чуть его переделать?
Таких строк может быть сколько угодно (не обязательно три)
EducatedFool!
Спасибо, просто с таким вопросом, первый раз.
Попробую эту чистку, что получится, отпишусь.
valerij вне форума
Старый 28.11.2008, 16:18   #10
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

EducatedFool!
Ну вот и попробовал, все получилось удалить, папка "winsxs" уменьшилась с ~9,5 Гиг до 2.5, но размер, ладно, после перезагрузки сразу виден прирост скорости(виста не любит когда при копировании, удалении в папке очень много мелких файлов) при удалении папки "winsxs(7 гб)" уже в папке "C:\Temp".
Не знаю, как виста, будет себя дальше вести, но пока ОК!!!
Так, что можно, после окончательного теста, рекомендовать ВАШ макрос, дополнив его клавишей запуска!!
Код:
Private Sub Workbook_Open()
      Application.OnKey "{F1}", "test"
End Sub
valerij вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
меню в виста fedoroff Windows 1 08.12.2008 05:45
папки с xp на виста и вис верса aska2013 Операционные системы общие вопросы 4 10.11.2008 11:37
виста sergei64_89 Win Api 0 28.04.2008 15:31
Виста не берёт родные дрова Fainder Свободное общение 7 09.09.2007 21:52
определить папку мандарин Общие вопросы Delphi 5 13.05.2007 17:20