Очистка мусора после установки Windows
После установки Windows в некоторых папках и в корне дисков остаются мусорные папки и файлы, например этим страдает Visual C++ 2008. Как указать удаление известных файлов в корне всех дисков сразу, а не перечислять каждый? И второе, есть папка такого вида: {2FC9EE99-128F-4CEC-BC98-1E3F31390064}, цифры при каждой новой установке меняются, можно ли её удалить с помощью подстановочных знаков?
|
Цитата:
Цитата Rostlv
Как указать удаление известных файлов в корне всех дисков сразу, а не перечислять каждый? »
|
автоматизировать перечисление (по типу диска) - через 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
Цитата:
Цитата Rostlv
есть папка такого вида: {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 аддона.
|
Цитата:
Цитата Rostlv
удаление папки не работает »
|
а тут и нет команды удаления (только фильтр), т.к. не был указан путь, по которому эту папку искать... " в пользователе, 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, огромное спасибо, теперь всё работает.
|
Время: 11:49.
© OSzone.net 2001-