|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Удаление ветки реестра с плавающим именем |
|
CMD/BAT - Удаление ветки реестра с плавающим именем
|
Пользователь Сообщения: 50 |
Доброго времени суток. Я видел много примеров решающих мою задачу, но не могу вникнуть, как использовать утилиту findstr.
Задача: В ветке реестра: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList существует плавающий SID с окончанием 1000, 1001, 1002, 1003, 1004, 100...* Нужно получить имя SIDа с нужным окончанием и удалить его. За ранее, спасибо за помощь! |
|
Отправлено: 12:38, 24-12-2015 |
Забанен Сообщения: 793
|
@echo off setlocal enabledelayedexpansion set key="HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" set get="%key:"=%\%%i" for /f "tokens=7 delims=\" %%i in ( 'reg query %key% ^| findstr /irc:"s-[0-9]*"' ) do ( set "sid=%%i" if "!sid:~-3,1!" neq "-" if "!sid:~-4,1!" neq "-" ( echo %get% % rem собственно, искомый[е] ключ[и] % ) ) endlocal exit /b |
Отправлено: 13:30, 24-12-2015 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 50
|
Профиль | Отправить PM | Цитировать Не отрабатывает, находятся SIDы с неверным индификатором, или скрипт нужно было дополнить?
==================================================== Результат работы скрипта: Скрытый текст
C:\Users\n7700-00681>@echo off C:\Users\n7700-00681>setlocal enabledelayedexpansion C:\Users\n7700-00681>set key="HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" C:\Users\n7700-00681>set get="HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\%i" C:\Users\n7700-00681>for /F "tokens=7 delims=\" %i in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" | findstr /irc:"s-[0-1]*"') do ( set "sid=%i" if "!sid:~-3,1!" NEQ "-" if "!sid:~-4,1!" NEQ "-" (echo "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\%i" ) ) C:\Users\n7700-00681>( set "sid=S-1-5-18" if "!sid:~-3,1!" NEQ "-" if "!sid:~-4,1!" NEQ "-" (echo "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-18" ) ) C:\Users\n7700-00681>( set "sid=S-1-5-19" if "!sid:~-3,1!" NEQ "-" if "!sid:~-4,1!" NEQ "-" (echo "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-19" ) ) C:\Users\n7700-00681>( set "sid=S-1-5-20" if "!sid:~-3,1!" NEQ "-" if "!sid:~-4,1!" NEQ "-" (echo "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-20" ) ) C:\Users\n7700-00681>( set "sid=S-1-5-21-116022207-583602576-2121419680-1346097.bak" if "!sid:~-3,1!" NEQ "-" if "!sid:~-4,1!" NEQ "-" (echo "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-116022207-583602576-2121419680-1346097.bak" ) ) "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-116022207-583602576-2121419680-1346097.bak" C:\Users\n7700-00681>( set "sid=S-1-5-21-116022207-583602576-2121419680-1346626.bak" if "!sid:~-3,1!" NEQ "-" if "!sid:~-4,1!" NEQ "-" (echo "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-116022207-583602576-2121419680-1346626.bak" ) ) "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-116022207-583602576-2121419680-1346626.bak" C:\Users\n7700-00681>( set "sid=S-1-5-21-116022207-583602576-2121419680-2218079" if "!sid:~-3,1!" NEQ "-" if "!sid:~-4,1!" NEQ "-" (echo "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-116022207-583602576-2121419680-2218079" ) ) "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-116022207-583602576-2121419680-2218079" C:\Users\n7700-00681>( set "sid=S-1-5-21-3219155785-3520165716-3308996480-1000" if "!sid:~-3,1!" NEQ "-" if "!sid:~-4,1!" NEQ "-" (echo "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-3219155785-3520165716-3308996480-1000" ) ) "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-3219155785-3520165716-3308996480-1000" C:\Users\n7700-00681>( set "sid=S-1-5-21-3219155785-3520165716-3308996480-1004" if "!sid:~-3,1!" NEQ "-" if "!sid:~-4,1!" NEQ "-" (echo "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-3219155785-3520165716-3308996480-1004" ) ) "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-3219155785-3520165716-3308996480-1004" C:\Users\n7700-00681>( set "sid=S-1-5-21-3219155785-3520165716-3308996480-500" if "!sid:~-3,1!" NEQ "-" if "!sid:~-4,1!" NEQ "-" (echo "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-3219155785-3520165716-3308996480-500" ) ) C:\Users\n7700-00681>( set "sid=S-1-5-21-3908561691-2003391815-3342993206-42802" if "!sid:~-3,1!" NEQ "-" if "!sid:~-4,1!" NEQ "-" (echo "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-3908561691-2003391815-3342993206-42802" ) ) "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-3908561691-2003391815-3342993206-42802" C:\Users\n7700-00681>( set "sid=S-1-5-21-3908561691-2003391815-3342993206-43404" if "!sid:~-3,1!" NEQ "-" if "!sid:~-4,1!" NEQ "-" (echo "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-3908561691-2003391815-3342993206-43404" ) ) "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-3908561691-2003391815-3342993206-43404" C:\Users\n7700-00681>endlocal C:\Users\n7700-00681>exit /b Вру, в куче мусора нашёл вывод: "sid=S-1-5-21-3219155785-3520165716-3308996480-1004" А как теперь его на удаление пристроить? На разных ПК, имена буду разные, кроме последних ЧЕТЫРЕХ цыфер... То есть из мусора к удалению идут 2 записи: 1) S-1-5-21-3219155785-3520165716-3308996480-1004 2) S-1-5-21-3219155785-3520165716-3308996480-1000 как бы это реализовать? |
Последний раз редактировалось DarckSol, 24-12-2015 в 14:46. Отправлено: 14:36, 24-12-2015 | #3 |
Ветеран Сообщения: 1758
|
|
Отправлено: 16:11, 24-12-2015 | #4 |
Пользователь Сообщения: 50
|
Профиль | Отправить PM | Цитировать Цитата:
C:\Documents and Settings\s1>"C:\Documents and Settings\s1\Рабочий стол\prof.bat" reg delete HKEY_LOCAL_MACHINE\software\microsoft\windows nt\currentversion\profilelist\S-1-5-21-861567501-616249376-1417001333-1003 /f Собственно, для выполнения команды удаления, нужно изменить синтаксис вывода на исполнение..., как это сделать? -------------- ПС: И батник малость подправил на поиск нужного, а то он лишнее выводил... for /f "tokens=*" %%i in ('" reg query "%key%" | findstr "S-1-5-21-.*-.*-.*-1[0-9]*$" "') d |
||
Последний раз редактировалось DarckSol, 28-12-2015 в 11:27. Отправлено: 10:49, 28-12-2015 | #5 |
Пользователь Сообщения: 50
|
Профиль | Отправить PM | Цитировать Так поможет кто допилить скрипт?
|
Отправлено: 12:12, 29-12-2015 | #6 |
Пользователь Сообщения: 50
|
Профиль | Отправить PM | Цитировать не решено
|
Отправлено: 09:44, 11-01-2016 | #7 |
Ветеран Сообщения: 1758
|
DarckSol, А в чем вообще ваш вопрос?
|
Отправлено: 14:32, 11-01-2016 | #8 |
Ушел из жизни Сообщения: 8595
|
Профиль | Сайт | Отправить PM | Цитировать Цитата DarckSol:
|
|
------- Отправлено: 01:10, 12-01-2016 | #9 |
Пользователь Сообщения: 50
|
Профиль | Отправить PM | Цитировать Цитата mwz:
|
|
Отправлено: 15:14, 17-02-2016 | #10 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
VBS/WSH/JS - Скрипт vbs для удаления ветки реестра | angel_lyucifer | Скриптовые языки администрирования Windows | 12 | 25-11-2015 18:32 | |
[решено] Завершить процесс с плавающим именем | HFShak | AutoIt | 1 | 06-09-2012 15:58 | |
экспорт ветки реестра фотошопа | koss | Хочу все знать | 6 | 03-07-2010 23:39 | |
Права на ветки реестра. | FerFel | Microsoft Windows NT/2000/2003 | 10 | 25-01-2010 19:44 | |
разрешения на ветки реестра | maxtravilov | Автоматическая установка Windows 2000/XP/2003 | 1 | 27-10-2005 21:44 |
|