Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Очистка мусора после установки Windows (http://forum.oszone.net/showthread.php?t=154045)

Rostlv 23-10-2009 11:33 1250144

Очистка мусора после установки Windows
 
После установки Windows в некоторых папках и в корне дисков остаются мусорные папки и файлы, например этим страдает Visual C++ 2008. Как указать удаление известных файлов в корне всех дисков сразу, а не перечислять каждый? И второе, есть папка такого вида: {2FC9EE99-128F-4CEC-BC98-1E3F31390064}, цифры при каждой новой установке меняются, можно ли её удалить с помощью подстановочных знаков?

amel27 26-10-2009 11:18 1252631

Цитата:

Цитата 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%"


Rostlv 26-10-2009 18:31 1253056

Спасибо amel27, но что-то удаление папки не работает, c дисками пока не разбирался. И ещё, в имени папки меняются не только цифры, но и буквы, забыл упомянуть выше. А сама папка создаётся в пользователе, Default User и в systemprofile, то есть в трёх местах сразу. А попроще вариантов нет? Свой батник запускаю через RunOnce, при втором входе в систему, после установки .Net 3.5 аддона.

amel27 27-10-2009 00:52 1253333

Цитата:

Цитата Rostlv
удаление папки не работает »

а тут и нет команды удаления (только фильтр), т.к. не был указан путь, по которому эту папку искать... "в пользователе, Default User и в systemprofile" тоже как-то туманно... в "Documents and Settings\Default User\" что-ли?.. ставьте вопросы конкретней плз.

Rostlv 27-10-2009 10:00 1253491

Путь я указал, но видимо что-то с фильтром.
Код:

@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]*}


amel27 27-10-2009 10:20 1253501

приведенная строка маска для 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


Rostlv 27-10-2009 10:31 1253507

amel27, огромное спасибо, теперь всё работает.


Время: 11:49.

Время: 11:49.
© OSzone.net 2001-