|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - удаление разделов реестра по маске (?) |
|
|
VBS/WSH/JS - удаление разделов реестра по маске (?)
|
Старожил Сообщения: 402 |
Добрый час ! подсобите... нужно удалить кучу вот таких подобных разделов: все они начинаются одинаково ы digest , числа разные.
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\Install\RefHive\Microsoft\Windows\CurrentVersion\Internet Settings\Digest\Hosts\digest01EB0000n10004:digest01EB0000n10004] в общем вопрос сводится как сделать выборку с условием. |
|
Отправлено: 18:51, 28-01-2012 |
Старожил Сообщения: 210
|
Профиль | Отправить PM | Цитировать Dim objReg, strKeyPath, arrSubKeys, intResult, strTemp, strLog Const HKLM = &H80000002 strLog = "RegClearing_Result.log" Set objReg = GetObject("winmgmts:\\.\root\default:StdRegProv") strKeyPath = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\Install\RefHive\Microsoft\Windows\CurrentVersion\Internet Settings\Digest\Hosts" On Error Resume Next objReg.EnumKey HKLM, strKeyPath, arrSubKeys If Err.Number = 0 Then If IsArray(arrSubKeys) Then For i = 0 To UBound(arrSubKeys) If InStrRev(arrSubKeys(i), "digest", -1, vbTextCompare) > 0 Then intResult = objReg.DeleteKey(HKLM, strKeyPath & "\" & arrSubKeys(i)) If Err.Number = 0 Then If intResult = 0 Then strTemp = strTemp & arrSubKeys(i) & " -> удалён" & vbNewLine Else strTemp = strTemp & arrSubKeys(i) & " -> ошибка удаления с кодом " & intResult & vbNewLine End If Else strTemp = strTemp & arrSubKeys(i) & " -> ошибка " & Err.Number & vbNewLine Err.Clear End If End If Next If Len(strTemp) > 0 Then Set objFS = CreateObject("Scripting.FileSystemObject") strLog = objFS.BuildPath(objFS.GetParentFolderName(WScript.ScriptFullName), strLog) Set objFile = objFS.OpenTextFile(strLog, 2, True) objFile.Write strTemp objFile.Close Set objFile = Nothing Set objFS = Nothing WScript.Echo "Готово." Else WScript.Echo "Подключи с именами, соответствующими указанному условию, не обнаружены." End If Else WScript.Echo "Подключи не обнаружены." End If Else WScript.Echo "Ошибка " & Err.Number & vbNewLine & Err.Description Err.Clear End If Set objReg = Nothing WScript.Quit 0 |
Последний раз редактировалось DmitriiV, 30-01-2012 в 09:46. Отправлено: 09:20, 30-01-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 402
|
Профиль | Отправить PM | Цитировать Основательно. я думал уложиться в 5-10 строчек
![]() |
Отправлено: 12:48, 30-01-2012 | #3 |
Старожил Сообщения: 402
|
Профиль | Отправить PM | Цитировать Ошибка CScript: Ошибка при выполнении сервера сценариев Windows. (Параметр задан
неверно. ) |
Отправлено: 18:26, 31-01-2012 | #4 |
Старожил Сообщения: 210
|
Профиль | Отправить PM | Цитировать 1. Приведите полный текст сообщения об ошибке.
2. Если запускаемая Вами версия сценария отличается от приведённого примера, то выложите код Вашей версии. 3. Приведите полностью консольную команду, с помощью которой пытаетесь запустить сценарий. |
|
Отправлено: 07:31, 01-02-2012 | #5 |
Старожил Сообщения: 402
|
Профиль | Отправить PM | Цитировать 1. это полный текст.
2. копировал вставил без изменений. два раза перепробовал 3. cscript //nologo scriptname.vbs |
Отправлено: 08:59, 01-02-2012 | #6 |
Старожил Сообщения: 210
|
Профиль | Отправить PM | Цитировать foxbat, пока не удаётся воспроизвести Вашу ситуацию.
1. Какая версия ОС используется? 2. Работает ли сценарий, если его запускать из GUI? Если не работает, то каков будет результат работы сценария: |
Отправлено: 15:44, 01-02-2012 | #7 |
Старожил Сообщения: 402
|
Профиль | Отправить PM | Цитировать Дмитрий, скрипт работает. я сохранил его в один файл, а запускал другой - пустой. Вот только результат прогона "Подключи не обнаружены."
|
Отправлено: 18:11, 01-02-2012 | #8 |
Старожил Сообщения: 210
|
Профиль | Отправить PM | Цитировать Можно предположить, что указанный в сценарии путь для поиска отличается от реального.
Попробуйте выполнить (в консольном режиме) приведённый ниже сценарий и проанализируйте результат его выполнения. Dim objReg, strKeyPath, arrSubKeys, strTemp, arrTemp, blnContinue Dim objFS, objFile, strLog Const HKLM = &H80000002 On Error Resume Next Set objReg = GetObject("winmgmts:\\.\root\default:StdRegProv") If Err.Number = 0 Then strLog = "RegPath_Parse.log" Set objFS = CreateObject("Scripting.FileSystemObject") strLog = objFS.BuildPath(objFS.GetParentFolderName(WScript.ScriptFullName), strLog) Set objFile = objFS.CreateTextFile(strLog, True) strKeyPath = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\Install\RefHive\Microsoft\Windows\CurrentVersion\Internet Settings\Digest\Hosts" arrTemp = Split(strKeyPath, "\") For i = 0 To UBound(arrTemp) strTemp = strTemp & arrTemp(i) arrSubKeys = Array() objReg.EnumKey HKLM, strTemp, arrSubKeys If Err.Number = 0 Then If UBound(arrSubKeys) >= 0 Then WScript.Echo strTemp & " -> кол-во подключей = " & UBound(arrSubKeys) + 1 objFile.WriteLine strTemp & " -> кол-во подключей = " & UBound(arrSubKeys) + 1 If i < UBound(arrTemp) Then blnContinue = False For j = 0 To UBound(arrSubKeys) If StrComp(arrSubKeys(j), arrTemp(i + 1), vbTextCompare) = 0 Then blnContinue = True Exit For End If Next strTemp = strTemp & "\" If Not blnContinue Then WScript.Echo strTemp & arrTemp(i + 1) & " -> подключ осутствует, продолжение просмотра невозможно" objFile.WriteLine strTemp & arrTemp(i + 1) & " -> подключ осутствует, продолжение просмотра невозможно" Exit For End If Else For j = 0 To UBound(arrSubKeys) WScript.Echo arrSubKeys(j) objFile.WriteLine arrSubKeys(j) Next End If Else WScript.Echo strTemp & " -> подключи не обнаружены" objFile.WriteLine strTemp & " -> подключи не обнаружены" Exit For End If Else WScript.Echo strTemp & " -> ошибка чтения списка подключей" objFile.WriteLine strTemp & " -> ошибка чтения списка подключей" Err.Clear Exit For End If Next objFile.Close Set objFile = Nothing Set objFS = Nothing Else WScript.Echo "Ошибка " & Err.Number & vbNewLine & Err.Description Err.Clear End If Set objReg = Nothing WScript.Quit 0 |
Отправлено: 11:49, 02-02-2012 | #9 |
Старожил Сообщения: 402
|
Профиль | Отправить PM | Цитировать |
Отправлено: 14:11, 02-02-2012 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Удаление каталогов по маске. | mishgan2004 | Скриптовые языки администрирования Windows | 4 | 20-07-2017 14:00 | |
CMD/BAT - Поиск по маске - удаление, перемещение, запуск | iramp | Скриптовые языки администрирования Windows | 1 | 22-12-2011 18:55 | |
Delphi - Перемещение и удаление файлов по маске. | Putin-mode | Программирование и базы данных | 1 | 21-06-2010 12:16 | |
CMD/BAT - [решено] Перемещение (удаление) директорий по маске | ven00m | Скриптовые языки администрирования Windows | 17 | 15-11-2009 10:24 | |
CMD/BAT - Удаление скрытых папок по маске | chatlaninsan | Скриптовые языки администрирования Windows | 5 | 07-09-2009 17:22 |
|