Комментарии 85
У меня на win7 x64 не работает. Ну и ладно.
Reading all OEM drivers…
Traceback (most recent call last):
File "", line 248, in File "", line 158, in main
File "", line 108, in getAllDrivers
__main__.PnpUtilOutputError: Unexpected pnputil.exe output start: ╤ыєцхсэр яЁюуЁрььр PnP ╠рщъЁюёюЇЄ
Reading all OEM drivers…
Traceback (most recent call last):
File "", line 248, in File "", line 158, in main
File "", line 108, in getAllDrivers
__main__.PnpUtilOutputError: Unexpected pnputil.exe output start: ╤ыєцхсэр яЁюуЁрььр PnP ╠рщъЁюёюЇЄ
Похоже скрипт ожидает английскую версию винды. Починил, выполнив перед запуском скрипта:
Теперь падает с такой ошибкой :-(
chcp 65001
Теперь падает с такой ошибкой :-(
Reading all OEM drivers... done Reading oem*.inf files... Traceback (most recent call last): File "<string>", line 248, in <module> File "<string>", line 198, in main Exception: oem50.inf is duplicate of oem49.inf
Спасибо. Не заработала пока страницу не поменял. Почистила целых 153 из 1237 Мб =)
Да, писалось на английской. Надо будет поправить, может быть, даже с помощью этой chcp, спасибо :)
А то, что у Вас случилось… это нечто странное. В %WINDIR%\Inf нашлось два одинаковых по содержимому .INF файла. Можно попробовать подумать, как с этим жить.
А то, что у Вас случилось… это нечто странное. В %WINDIR%\Inf нашлось два одинаковых по содержимому .INF файла. Можно попробовать подумать, как с этим жить.
насколько заметил: при установке драйверов в режиме «выберу сам из указанного места», виндовс просто копирует еще один комплект. сами драйвера, видимо пишутся поверх, а вот inf — пишется как oem?? со счетчиком.
Думаю, если нашлись совершенно одинаковые inf, все у которых меньшее значение, можно просто удалить.
Думаю, если нашлись совершенно одинаковые inf, все у которых меньшее значение, можно просто удалить.
Тут такая же фигня сулчилась. Два одинаковых файла. Что предпринять? Как починить?
Я пока не знаю. Желательно найти, каким драйверам они соответствуют, есть ли физические дубли в виде папок и всё такое.
Я пока вижу два варианта действий:
Попробуйте посмотреть в выводе pnputil -e, что за драйвера указаны на эти oem???.inf файлики, может, это нам что подскажет. Ещё (если не лень) поищите совпадающие по содержанию .inf'ы в подпапках %WINDIR%\System32\DriverStore\FileRepository, это поможет ответить на вопрос, дублируются ли драйвера в хранилище.
Я пока вижу два варианта действий:
- Если дублированы только .inf файлы, а драйвера реально хранятся в единственном экземпляре — игнорировать (удалять эти .inf-ы я бы в любом случае не стал)
- Если дублированы и сами драйвера в DriverStorage — удалять с наименьшим номером
Попробуйте посмотреть в выводе pnputil -e, что за драйвера указаны на эти oem???.inf файлики, может, это нам что подскажет. Ещё (если не лень) поищите совпадающие по содержанию .inf'ы в подпапках %WINDIR%\System32\DriverStore\FileRepository, это поможет ответить на вопрос, дублируются ли драйвера в хранилище.
Кстати, починено, см. релиз 1.0.1
У меня win 8.1 Preview x64 — не работает
Reading all OEM drivers…
Traceback (most recent call last):
File "", line 248, in File "", line 158, in main
File "", line 108, in getAllDrivers
__main__.PnpUtilOutputError: Unexpected pnputil.exe output start: ╤ыєцхсэр яЁюуЁрььр PnP ╠рщъЁюёюЇЄ
Reading all OEM drivers…
Traceback (most recent call last):
File "", line 248, in File "", line 158, in main
File "", line 108, in getAllDrivers
__main__.PnpUtilOutputError: Unexpected pnputil.exe output start: ╤ыєцхсэр яЁюуЁрььр PnP ╠рщъЁюёюЇЄ
win7 x64 — работает, -1,6 Gb
Воо, за то чтоб ее почистить или хотя бы почитать зачем нужно это нагромождение DLLек и как оно все работает, я готов многое отдать
Вероятно вам будет интересно: Уменьшение размеров папки winsxs и Engineering Windows 7 — Disk Space (eng)
И ещё ссылка по теме:
www.outsidethebox.ms/15302/
www.outsidethebox.ms/15302/
Это да, эта папка толстая. Но, судя по беглому взгляду внутрь, там всё так или иначе нужно установленным программам, что, кстати, подтверждают комментарии ниже.
Мне пишет
Reading all OEM drivers…
Traceback (most recent call last):
File "", line 248, in
File "", line 158, in main
File "", line 108, in getAllDrivers
__main__.PnpUtilOutputError: Unexpected pnputil.exe output start: ╤ыєцхсэр яЁюу
Ёрььр PnP ╠рщъЁюёюЇЄ
Win7-x64
битность соблюл.
Reading all OEM drivers…
Traceback (most recent call last):
File "", line 248, in
File "", line 158, in main
File "", line 108, in getAllDrivers
__main__.PnpUtilOutputError: Unexpected pnputil.exe output start: ╤ыєцхсэр яЁюу
Ёрььр PnP ╠рщъЁюёюЇЄ
Win7-x64
битность соблюл.
Оба ноутбука с тех пор живут полной жизнью, в смысле никаких проблем от очистки я не заметил.
есть такой скрипт — WinsxsLite, чистит папку winsxs.
сам он работает нормально, но после использования замечены проблемы при установке SP, и [скорее всего] обычных обновлений через WU или вручную через .exe/.msu
здесь с этим точно все в порядке?
тоже люблю удалять ненужное/лишнее, например очень бесит куча mui-файлов в папках с языками.
Было забавно, когда я запустил WinsxsLite на ноуте и после очистки у меня перестали 32-х битные приложения работать с инетом. Т.е. ie 64 единственный, который работал, а весь остальной софт сидел в глубоком оффлайне. До сих пор не пойму как так произошло, особенно с учетом, что на рабочем компе все прошло без каких либо проблем.
Кстати, прилично места можно освободить, если поудалять кучу шрифтов (арабские, корейские, ну и просто ненужные)
Кстати, прилично места можно освободить, если поудалять кучу шрифтов (арабские, корейские, ну и просто ненужные)
Ну что значит «точно»? На моих пациентах проблем не обнаружено, удаляю я довольно безопасно, через вызов MS программы. Но гарантий я Вам не давал :)
Да, кстати, в том же pyWinClobber у меня есть и скрипты для очистки .msi/.msp кэша винды, удаляют файлы, которые не зарегистрированы в Windows Installer Database. Правда, сюда про них писать не стал, уж больно выхлоп маленький от них был на моём ноутбуке — всего один несчастный беспризорный .msi нашёлся, на 16 Мб. Видимо, Винда стала более аккуратно отслеживать эти файлы, и они перестали плодиться.
как и в предыдущих 3-х комментариях, ошибка в строке 108 файла driver_cleanup.py, из-за того что проверяется на соответствие строка названия программы
у меня, как и у предыдущих комментаторов, русифицированная винда, следовательно мне pnputil выдает 'Служебная программа PnP Майкрософт', а в программе проверяется 'Microsoft PnP Utility'
у меня, как и у предыдущих комментаторов, русифицированная винда, следовательно мне pnputil выдает 'Служебная программа PnP Майкрософт', а в программе проверяется 'Microsoft PnP Utility'
Старые драйверы можно почистить хитроватым способом, но без специальных программ через диспетчер оборудования (Device Manager — View — Show hidden devices). Наверное, они как раз в /DiverStore хранятся. Если нет — это ещё один пункт в бюджете очистки. На WinXP — такая же система.
так удаляет только записи старых устройств в реестре, но никак не файлы драйверов
самые интересные — скрытые, но не подключенные устройства (которые по умолчанию не показывает диспетчер устройств) можно увидеть так:
1 устанавливаем переменную окружения devmgr_show_nonpresent_devices в значение 1 (на самом деле можно присвоить что угодно, только не 0)
1.1 через командную строку:
1.2 через гую: свойства системы->дополнительные параметры->дополнительно переменные среды. Далее, любимым образом запускаем диспетчер устройств
2. в диспетчере устройств выбираем вид->показать скрытые устройства
3. неподключенные устройства показываются серым цветом.
4. заходим в устройство, вкладка драйвер->удалить. ставим галочку Удалить программы драйверов для этого устройства.
вот так можно удалить драйвера от ранее подключенных в систему устройств (модемы, сетевые карты и пр)
1 устанавливаем переменную окружения devmgr_show_nonpresent_devices в значение 1 (на самом деле можно присвоить что угодно, только не 0)
1.1 через командную строку:
cmd.exe
set devmgr_show_nonpresent_devices=1
devmgmt.msc
1.2 через гую: свойства системы->дополнительные параметры->дополнительно переменные среды. Далее, любимым образом запускаем диспетчер устройств
2. в диспетчере устройств выбираем вид->показать скрытые устройства
3. неподключенные устройства показываются серым цветом.
4. заходим в устройство, вкладка драйвер->удалить. ставим галочку Удалить программы драйверов для этого устройства.
вот так можно удалить драйвера от ранее подключенных в систему устройств (модемы, сетевые карты и пр)
Win8 x64
Reading all OEM drivers… done
Reading oem*.inf files… done
Parsing DriverStore…
Traceback (most recent call last):
File "", line 248, in File "", line 215, in main
IOError: [Errno 2] No such file or directory: 'C:\\Windows\\system32\\DriverStor
e\\FileRepository\\mdmcpq.inf_amd64_d9e0b9c4fe044b4d\\mdmcpq.inf'
Reading all OEM drivers… done
Reading oem*.inf files… done
Parsing DriverStore…
Traceback (most recent call last):
File "", line 248, in File "", line 215, in main
IOError: [Errno 2] No such file or directory: 'C:\\Windows\\system32\\DriverStor
e\\FileRepository\\mdmcpq.inf_amd64_d9e0b9c4fe044b4d\\mdmcpq.inf'
Ого… другая структура на восьмёрке, что ли?.. Можете прислать содержимое папки
C:\Windows\system32\DriverStoe\FileRepository\mdmcpq.inf_amd64_d9e0b9c4fe044b4d\
?
C:\Windows\system32\DriverStoe\FileRepository\mdmcpq.inf_amd64_d9e0b9c4fe044b4d\
?
Там только один файл «usbser.sys»
db.tt/ieHRsqtp
db.tt/ieHRsqtp
Похоже на недокопированный драйвер… по крайней мере у меня такого не бывает.
Видимо, такие драйвера надо просто игнорировать.
Видимо, такие драйвера надо просто игнорировать.
Точно такая же ошибка.
Win10 Rus x64
Reading all OEM drivers… done
Reading oem*.inf files… done
Parsing DriverStore…
Traceback (most recent call last):
File "", line 287, in File "", line 254, in main
IOError: [Errno 2] No such file or directory: 'C:\\Windows\\system32\\DriverStore\\FileRepository\\wdmaudio.inf_amd64_5641cde732058628\\wdmaudio.inf'
Как «проигнорировать такой драйвер»?
Win10 Rus x64
Reading all OEM drivers… done
Reading oem*.inf files… done
Parsing DriverStore…
Traceback (most recent call last):
File "", line 287, in File "", line 254, in main
IOError: [Errno 2] No such file or directory: 'C:\\Windows\\system32\\DriverStore\\FileRepository\\wdmaudio.inf_amd64_5641cde732058628\\wdmaudio.inf'
Как «проигнорировать такой драйвер»?
У вас большая папка DriverStore? Попробуйте, пожалуйста, применить стандартный инструмент очистки и посмотреть, что изменилось.
Win7 x64 Pro Eng
Reading all OEM drivers…
Traceback (most recent call last):
File "", line 248, in File "", line 158, in main
File "", line 118, in getAllDrivers
File "", line 77, in parseLine
ValueError: too many values to unpack
Я кстати правильно понимаю, что удалять драйвера для устройств «которые на данный момент не используются» не идеальный подход? Ведь таким образом снесутся так же драйвера всего, что не воткнуто сейчас, но подключается время от времени (сканеры, принтеры, геймпады, тв-тюнеры и прочее).
Правильно понимаете. Но мой скрипт не удаляет драйвер только потому, что тот не используется.
Он пытается найти и удалить старые версии драйвера, оставляя самую последнюю нетронутой.
Он пытается найти и удалить старые версии драйвера, оставляя самую последнюю нетронутой.
Разве Windows сама не скачивает нужные ей драйвера в момент подключения устройства?
Я за то, чтобы не хранить локально миллион ненужных драйверов, большинство из которых даже никогда не пригодятся, а добавить опцию в программу очистки удалять все неиспользуемые в данный момент драйвера.
Я за то, чтобы не хранить локально миллион ненужных драйверов, большинство из которых даже никогда не пригодятся, а добавить опцию в программу очистки удалять все неиспользуемые в данный момент драйвера.
Увы, на используемое мною железо (китайские фиговины, телефоны Huawei/Highscreen и т.п.) не находит драйверов, надо тянуться за дисками или искать самому. Нет, совет «не используйте такие железяки» мне не подходит.
Значит предложить список при очистке, и автоматически очищать именно те драйвера, которые есть на серверах MS, не трогая установленные вручную.
Интересно, каким образом отличать автоматически установленные от установленных вручную? Я способа не знаю, по крайней мере на данный момент.
Можно, правда, добавить опцию типа «попробуй удалить всё подряд», тогда останутся только драйвера от того, что сейчас в систему воткнуто.
Можно, правда, добавить опцию типа «попробуй удалить всё подряд», тогда останутся только драйвера от того, что сейчас в систему воткнуто.
Обычно автоматически установленные драйвера имеют подпись от имени Microsoft.
Подпись от MS — это, как я понимаю, знак того, что драйвера прошли сертификацию, проверку или ещё что-то. Где они при этом физически хранятся — я не знаю. Например, драйвера NVidia у меня сертифицированы и подписаны MS, но ставил я их путём скачивания пакета драйверов с сайта (возможно, Windows и сама догадалась бы при установке сходить на сайт, я обновлял).
Еще была утилита, кторая ищет дубли библиотек, тоже огромное количество места высвобождать могла.
Microsoft Windows [Version 6.1.7601]
Copyright © 2009 Microsoft Corporation. All rights reserved.
C:\Users\Alex\Downloads\64-bit\64-bit>driver_cleanup.exe
Reading all OEM drivers… done
Reading oem*.inf files…
Traceback (most recent call last):
File "", line 248, in File "", line 198, in main
Exception: oem171.inf is duplicate of oem170.inf
C:\Users\Alex\Downloads\64-bit\64-bit>
Copyright © 2009 Microsoft Corporation. All rights reserved.
C:\Users\Alex\Downloads\64-bit\64-bit>driver_cleanup.exe
Reading all OEM drivers… done
Reading oem*.inf files…
Traceback (most recent call last):
File "", line 248, in File "", line 198, in main
Exception: oem171.inf is duplicate of oem170.inf
C:\Users\Alex\Downloads\64-bit\64-bit>
Вот это разве не то же самое?


К слову о повышении привилегий окна командной строки. Утилита за авторством Сергея Ткаченко.
Или то же самое, но без .NET :)
"Reading all OEM drivers…
Traceback (most recent call last):
File "", line 248, in File "", line 158, in main
File "", line 108, in getAllDrivers
__main__.PnpUtilOutputError: Unexpected pnputil.exe output start: ╤ыєцхсэр яЁюу
Ёрььр PnP ╠рщъЁюёюЇЄ"
Руки таким программистам выдёргивать нужно.
Traceback (most recent call last):
File "", line 248, in File "", line 158, in main
File "", line 108, in getAllDrivers
__main__.PnpUtilOutputError: Unexpected pnputil.exe output start: ╤ыєцхсэр яЁюу
Ёрььр PnP ╠рщъЁюёюЇЄ"
Руки таким программистам выдёргивать нужно.
Reading all OEM drivers…
Traceback (most recent call last):
File "", line 248, in File "", line 158, in main
File "", line 118, in getAllDrivers
File "", line 78, in parseLine
File «C:\Vass\Dev\pyWinClobber\build\pyi.win32\pyWinClobber\out01-PYZ.pyz\_str
ptime», line 325, in _strptime
ValueError: time data '29/05/2008' does not match format '%m/%d/%Y'
chcp 65001 писал
такого пути у меня нет: C:\Vass\Dev
Traceback (most recent call last):
File "", line 248, in File "", line 158, in main
File "", line 118, in getAllDrivers
File "", line 78, in parseLine
File «C:\Vass\Dev\pyWinClobber\build\pyi.win32\pyWinClobber\out01-PYZ.pyz\_str
ptime», line 325, in _strptime
ValueError: time data '29/05/2008' does not match format '%m/%d/%Y'
chcp 65001 писал
такого пути у меня нет: C:\Vass\Dev
Понятно. Опять локализация меня кусает, на сей раз в формате даты… Блин %)
C:\Users\GDie\Downloads\64-bit (1)>driver_cleanup.exe
Reading all OEM drivers…
Traceback (most recent call last):
File "", line 287, in File "", line 197, in main
File "", line 157, in getAllDrivers
__main__.PnpUtilOutputError: Cannot find suitable date format
joxi.ru/hsVTUtg5CbC-TtD0DDg
Reading all OEM drivers…
Traceback (most recent call last):
File "", line 287, in File "", line 197, in main
File "", line 157, in getAllDrivers
__main__.PnpUtilOutputError: Cannot find suitable date format
joxi.ru/hsVTUtg5CbC-TtD0DDg
В win есть один очень жрущий файл «hiberfil.sys» (у меня на 13,4Гб).
Если не нужна гибернация и сверхбыстрая загрузка, то можно «удалить» этот файл командой:
Если не нужна гибернация и сверхбыстрая загрузка, то можно «удалить» этот файл командой:
powercfg -h off
Скрытый текст

У кого русифицированная Windows — скиньте в личку вывод «pnputil -e», чтобы понять, от чего отталкиваться при разборе вывода.
Постарался починить основные проблемы, связанные с локализацией, пробуем новый релиз: github.com/JustAMan/pyWinClobber/releases/tag/v1.0.1
Прошу прощения но вот моя ошибка:
После «output start:» никаких кракозябров нет.
Версию качал v1.0.1 для х64
D:\TMP\64-bit>driver_cleanup.exe
Reading all OEM drivers…
Traceback (most recent call last):
File "<string>", line 287, in <module>
File "<string>", line 197, in main
File "<string>", line 131, in getALLDrivers
__main__.PnpUtilOutputError: Unexpected pnputil.exe output start:
После «output start:» никаких кракозябров нет.
Версию качал v1.0.1 для х64
chcp 65001
пробовал«Очистка диска» в Windows 7 научилась удалять старые обновления и удалять лишние файлы из WinSxS:
www.outsidethebox.ms/15444/
www.outsidethebox.ms/15444/
У меня вот такое выдаёт (Win7 x64 SP1 Professional)
C:\temp\pyWinClobber64bit>driver_cleanup.exe
Reading all OEM drivers…
Traceback (most recent call last):
File "", line 248, in File "", line 158, in main
File "", line 118, in getAllDrivers
File "", line 77, in parseLine
ValueError: too many values to unpack
pastebin.com/Rj6S2Qev
C:\temp\pyWinClobber64bit>driver_cleanup.exe
Reading all OEM drivers…
Traceback (most recent call last):
File "", line 248, in File "", line 158, in main
File "", line 118, in getAllDrivers
File "", line 77, in parseLine
ValueError: too many values to unpack
pastebin.com/Rj6S2Qev
Спасибо!!!
Win 8 rus 64bit: -2384 Mb
Win 8 rus 64bit: -2384 Mb
Спасибо! Win 8.1 RU x64: -7848 Mb
Привет вам из будущего. Диски у нас по прежнему дорогие, windows 10 всё так же не умеет удалять старые версии драйверов. Спасибо за утилиту, на одной только nvidia освободил 15гб, и ещё чуть больше 1гб на всём остальном.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Автоматическая очистка старых драйверов, или выжмем немного места из Windows 7