Показать полную графическую версию : [решено] Очистка мусора после установки Windows
После установки Windows в некоторых папках и в корне дисков остаются мусорные папки и файлы, например этим страдает Visual C++ 2008. Как указать удаление известных файлов в корне всех дисков сразу, а не перечислять каждый? И второе, есть папка такого вида: {2FC9EE99-128F-4CEC-BC98-1E3F31390064}, цифры при каждой новой установке меняются, можно ли её удалить с помощью подстановочных знаков?
Как указать удаление известных файлов в корне всех дисков сразу, а не перечислять каждый? »автоматизировать перечисление (по типу диска) - через DiskPart или WMI, пример для жестких (3) и сменных (2):
@Echo Off
SetLocal EnableExtensions EnableDelayedExpansion
For /F "Skip=1 UseBackQ Tokens=1,2" %%i In (
`WMIC LogicalDisk Where 'DriveType^=2 OR DriveType^=3' GET Name^,SystemName`
) Do If Not "%%j"=="" Set $L=!$L! %%i
For %%i In (%$L%) Do Echo Here Command for Disk %%i
есть папка такого вида: {2FC9EE99-128F-4CEC-BC98-1E3F31390064}, цифры при каждой новой установке меняются, можно ли её удалить с помощью подстановочных знаков? »можно через FindStr, но ввиду некоторых ограничений (поддерживаемые метасимволы, максимальная длина шаблона) условие придется смягчить - например, не задавать жестко количество HEX-символов между ограничителями:
@Echo Off
Set ROOT=.
Set $R={[0-9A-F][0-9A-F]*-[0-9A-F][0-9A-F][0-9A-F][0-9A-F]-[0-9A-F][0-9A-F][0-9A-F][0-9A-F]-[0-9A-F][0-9A-F]*-[0-9A-F][0-9A-F]*}
DIR /B/A:D %ROOT%\*|FindStr /XIRC:"%$R%"
Спасибо amel27, но что-то удаление папки не работает, c дисками пока не разбирался. И ещё, в имени папки меняются не только цифры, но и буквы, забыл упомянуть выше. А сама папка создаётся в пользователе, Default User и в systemprofile, то есть в трёх местах сразу. А попроще вариантов нет? Свой батник запускаю через RunOnce, при втором входе в систему, после установки .Net 3.5 аддона.
удаление папки не работает »а тут и нет команды удаления (только фильтр), т.к. не был указан путь, по которому эту папку искать... "в пользователе, Default User и в systemprofile" тоже как-то туманно... в "Documents and Settings\Default User\" что-ли?.. ставьте вопросы конкретней плз.
Путь я указал, но видимо что-то с фильтром.
@Echo Off
RD /S /Q %SystemRoot%\system32\config\systemprofile\{[0-9A-F][0-9A-F]*-[0-9A-F][0-9A-F][0-9A-F][0-9A-F]-[0-9A-F][0-9A-F][0-9A-F][0-9A-F]-[0-9A-F][0-9A-F]*-[0-9A-F][0-9A-F]*}
RD /S /Q %SystemDrive%\Documents and Settings\Default User\{[0-9A-F][0-9A-F]*-[0-9A-F][0-9A-F][0-9A-F][0-9A-F]-[0-9A-F][0-9A-F][0-9A-F][0-9A-F]-[0-9A-F][0-9A-F]*-[0-9A-F][0-9A-F]*}
RD /S /Q %SystemDrive%\Documents and Settings\Имя пользователя\{[0-9A-F][0-9A-F]*-[0-9A-F][0-9A-F][0-9A-F][0-9A-F]-[0-9A-F][0-9A-F][0-9A-F][0-9A-F]-[0-9A-F][0-9A-F]*-[0-9A-F][0-9A-F]*}
приведенная строка маска для FindStr, а не имя папки
@Echo Off
Set $R={[0-9A-F][0-9A-F]*-[0-9A-F][0-9A-F][0-9A-F][0-9A-F]-[0-9A-F][0-9A-F][0-9A-F][0-9A-F]-[0-9A-F][0-9A-F]*-[0-9A-F][0-9A-F]*}
Call :RD_MASK "%$R%" "%SystemRoot%\system32\config\SystemProfile"
Call :RD_MASK "%$R%" "%SystemDrive%\Documents and Settings\Default User"
Call :RD_MASK "%$R%" "%SystemDrive%\Documents and Settings\%UserName%"
EXIT
:RD_MASK
For /F "Delims=" %%i In (
'DIR /B/A:D "%~2\*"^|FindStr /XIRC:"%~1"'
) Do RD /S/Q "%~2\%%i"
GoTo :EOF
amel27, огромное спасибо, теперь всё работает.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.