Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Удаление строк в REG файле

Ответить
Настройки темы
VBS/WSH/JS - Удаление строк в REG файле

Аватара для gen0m.rsw

Пользователь


Сообщения: 139
Благодарности: 10

Профиль | Отправить PM | Цитировать


Всем участникам форума респект!!!
Одним из участников был написан vbs, для обработки рег файлов , нельзя его доработать.
Код: Выделить весь код
Option Explicit

Dim objRegExp
Dim objFSO
Dim RegFile
Dim strText
Dim strFileName
Dim BOM
Dim valFormat

strFileName = "NAME.reg"

Set objFSO = CreateObject("Scripting.FileSystemObject")

Set RegFile = objFSO.OpenTextFile(strFileName)
  BOM = RegFile.Read(2)
RegFile.Close

If BOM = Chr(&HFF) & Chr(&HFE) Then
  valFormat = -1
Else
  valFormat = 0
End If

Set RegFile = objFSO.OpenTextFile(strFileName, 1, False, valFormat)
  strText = RegFile.ReadAll
RegFile.Close
  
Set objRegExp = New RegExp

With objRegExp
  .Global = True
  .IgnoreCase = True
  .Pattern = "\[HKEY_.+?\](?:\r\n)+(?=\[HKEY_|$)"
  strText = .Replace(strText, "")
End With

Set RegFile = objFSO.OpenTextFile(strFileName & ".reg", 2, True, valFormat)
  RegFile.Write strText
RegFile.Close

Set RegFile = Nothing
Set objFSO = Nothing
Set objRegExp = Nothing

WScript.Echo "Обработка завершена."

WScript.Quit 0
Хотелось бы что бы обрабатывались все REG файлы в текущей папке, а оригиналы
переименовывались в .BAK, точнее NAME.REG в NAME.REG.BAK.
Заранее спасибо.

Отправлено: 17:33, 11-06-2013

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Пробуйте:
читать дальше »
Код: Выделить весь код
Option Explicit

Const ForReading   = 1
Const ForWriting   = 2

Const TristateUseDefault = -2
Const TristateTrue       = -1
Const TristateFalse      =  0


Dim objFile

Dim boolBOM
Dim strContent
Dim strFileName


With WScript.CreateObject("Scripting.FileSystemObject")
	For Each objFile In .GetFolder(WScript.CreateObject("WScript.Shell").CurrentDirectory).Files
		strFileName = objFile.Name
		
		If LCase(.GetExtensionName(strFileName)) = "reg" Then
			WScript.Echo strFileName
			
			With objFile.OpenAsTextStream(ForReading, TristateFalse)
				boolBOM = .Read(2) = Chr(&HFF) & Chr(&HFE)
				.Close
			End With
			
			With objFile.OpenAsTextStream(ForReading, TristateUseDefault)
				strContent = .ReadAll()
				.Close
			End With
			
			With WScript.CreateObject("VBScript.RegExp")
				.Pattern    = "\[HKEY_.+?\](?:\r\n)+(?=\[HKEY_|$)"
				
				.Global     = True
				.IgnoreCase = True
				
				strContent = .Replace(strContent, "")
			End With
			
			objFile.Copy objFile.Name & ".bak"
			
			With .CreateTextFile(strFileName, True, boolBOM)
				.Write strContent
				.Close
			End With
		End If
	Next
End With

WScript.Quit 0

Отправлено: 01:02, 12-06-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для gen0m.rsw

Пользователь


Сообщения: 139
Благодарности: 10

Профиль | Отправить PM | Цитировать


Iska, нет не работает!!!
В папке было два рег файла(AppEvents.reg,Creative Tech.reg),
ни один не обработал, ну и две ошибки выдал
---------------------------
Windows Script Host
---------------------------
atibkup1.reg
---------------------------
ОК
---------------------------
---------------------------
Windows Script Host
---------------------------
atibkup2.reg
---------------------------
ОК
---------------------------

Iska, пардон, все ОК! По тестим дальше!!!

Отправлено: 03:39, 12-06-2013 | #3


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата gen0m.rsw:
ну и две ошибки выдал
atibkup1.reg
atibkup2.reg »
.

Закомментируйте строку с выводом имён обрабатываемых файлов:
Код: Выделить весь код
			'WScript.Echo strFileName
или используйте «cscript.exe» вместо «wscript.exe» в качестве основного обработчика WSH.

Отправлено: 09:52, 12-06-2013 | #4


Аватара для gen0m.rsw

Пользователь


Сообщения: 139
Благодарности: 10

Профиль | Отправить PM | Цитировать


Iska, все нормально, а нельзя что бы еще пустые строки удалял???

Отправлено: 06:05, 13-06-2013 | #5


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


gen0m.rsw, а зачем? Иметь по пустой строке перед именем очередного раздела:
читать дальше »
Код: Выделить весь код
REGEDIT4

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers]
"DefaultSpoolDirectory"="C:\\WINDOWS\\System32\\spool\\PRINTERS"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers\Bullzip PDF Printer]
"ChangeID"=dword:15e62a67
…
Код: Выделить весь код
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList]
"ProfilesDirectory"=…

— нормальная практика.

Отправлено: 08:44, 13-06-2013 | #6


Аватара для gen0m.rsw

Пользователь


Сообщения: 139
Благодарности: 10

Профиль | Отправить PM | Цитировать


Iska
Прошу вашей помощи!!!
Ваш скрипт:
Код: Выделить весь код
Option Explicit

Const ForReading   = 1
Const ForWriting   = 2

Const TristateUseDefault = -2
Const TristateTrue       = -1
Const TristateFalse      =  0


Dim objFile

Dim boolBOM
Dim strContent
Dim strFileName


With WScript.CreateObject("Scripting.FileSystemObject")
    For Each objFile In .GetFolder(WScript.CreateObject("WScript.Shell").CurrentDirectory).Files
        strFileName = objFile.Name
        
        If LCase(.GetExtensionName(strFileName)) = "reg" Then
            WScript.Echo strFileName
            
            With objFile.OpenAsTextStream(ForReading, TristateFalse)
                boolBOM = .Read(2) = Chr(&HFF) & Chr(&HFE)
                .Close
            End With
            
            With objFile.OpenAsTextStream(ForReading, TristateUseDefault)
                strContent = .ReadAll()
                .Close
            End With
            
            With WScript.CreateObject("VBScript.RegExp")
                .Pattern    = "\[HKEY_.+?\](?:\r\n)+(?=\[HKEY_|$)"
                
                .Global     = True
                .IgnoreCase = True
                
                strContent = .Replace(strContent, "")
            End With
            
            objFile.Copy objFile.Name & ".bak"
            
            With .CreateTextFile(strFileName, True, boolBOM)
                .Write strContent
                .Close
            End With
        End If
    Next
End With

WScript.Quit 0
Постараюсь на пальцах!!!

Скрипт обрабатывает чуть больше!!
Оригинал:
Код: Выделить весь код
[HKEY_CLASSES_ROOT\.dng\OpenWithList]

[HKEY_CLASSES_ROOT\.dng\OpenWithList\PhotoViewer.dll]

[HKEY_CLASSES_ROOT\.dng\OpenWithList\WLXPhotoViewer.dll]

[HKEY_CLASSES_ROOT\.dng]

[HKEY_CLASSES_ROOT\.dng\ShellEx]

[HKEY_CLASSES_ROOT\.dng\ShellEx\{e357fccd-a995-4576-b01f-234630154e96}]
@="{c7657c4a-9f68-40fa-a4df-96bc08eb3551}"
После:
Код: Выделить весь код
[HKEY_CLASSES_ROOT\.dng\ShellEx\{e357fccd-a995-4576-b01f-234630154e96}]
@="{c7657c4a-9f68-40fa-a4df-96bc08eb3551}"
Интересуют строки, которые должны остаться, без них ни как!!
Код: Выделить весь код
[HKEY_CLASSES_ROOT\.dng\OpenWithList\PhotoViewer.dll]

[HKEY_CLASSES_ROOT\.dng\OpenWithList\WLXPhotoViewer.dll]
В последних скрип игнорирует параметры и значения реестра!!!
С уважением !!!!

Последний раз редактировалось gen0m.rsw, 10-10-2014 в 20:00.


Отправлено: 19:42, 10-10-2014 | #7


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата gen0m.rsw:
Iska
Прошу вашей помощи!!!
Ваш скрипт: »
Скрипт не мой, а коллеги SendMessage. Я всего лишь изменил его в соответствии с Вашими потребностями.

Цитата gen0m.rsw:
Постараюсь на пальцах!!!
Скрипт обрабатывает чуть больше!! »
Скрипт обрабатывает ровно столько, сколько заказывали:
Цитата gen0m.rsw:
"Плотно сижу" на Advanced Installer, естественно приходится добавлять записи в реестр, вот какая проблема!
После экспорта/сохранения из многих программ получается примерно такие reg-файлы (пример)
[HKEY_LOCAL_MACHINE\SOFTWARE]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DateTime]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DateTime\Servers]
@="1"
При импорте в Advanced Installer енто недопустимо(ошибки при удалении)
Хотелось бы что в файле реестра удалялись , так называемые пустые разделы, кроме последнего( и конечно параметры). »
Отчего ж Вы теперь удивляетесь, а ?

Отправлено: 21:17, 10-10-2014 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Удаление строк в REG файле

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Удаление строк в текстовом файле, как это сделать??? VladZombie Скриптовые языки администрирования Windows 70 08-09-2020 13:28
CMD/BAT - [решено] Поиск, удаление, замена и добавление строк в текстового файле. Что возможно? akrav Скриптовые языки администрирования Windows 8 06-12-2015 13:22
CMD/BAT - Поиск слова в тексте, удаление строки, удаление 8 строк выше и 3 строк ниже Alk-13 Скриптовые языки администрирования Windows 0 10-02-2012 18:06
VBS/WSH/JS - Удаление строк в REG файле gen0m.rsw Скриптовые языки администрирования Windows 9 28-09-2011 18:03
CMD/BAT - [решено] Удаление строк в файле, начинающихся с переменной 2ooth Скриптовые языки администрирования Windows 3 31-08-2011 13:44




 
Переход