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

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

gen0m.rsw 11-06-2013 17:33 2165973

Удаление строк в REG файле
 
Всем участникам форума респект!!!
Одним из участников был написан 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.
Заранее спасибо.

Iska 12-06-2013 01:02 2166224

Пробуйте:
читать дальше »
Код:

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


gen0m.rsw 12-06-2013 03:39 2166247

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

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

Iska 12-06-2013 09:52 2166280

Цитата:

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

;).

Закомментируйте строку с выводом имён обрабатываемых файлов:
Код:

                        'WScript.Echo strFileName
или используйте «cscript.exe» вместо «wscript.exe» в качестве основного обработчика WSH.

gen0m.rsw 13-06-2013 06:05 2166826

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

Iska 13-06-2013 08:44 2166866

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"=…


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

gen0m.rsw 10-10-2014 19:42 2413600

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]

В последних скрип игнорирует параметры и значения реестра!!!
С уважением !!!!

Iska 10-10-2014 21:17 2413626

Цитата:

Цитата 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 енто недопустимо(ошибки при удалении)
Хотелось бы что в файле реестра удалялись , так называемые пустые разделы, кроме последнего( и конечно параметры). »

Отчего ж Вы теперь удивляетесь, а ;)?


Время: 06:05.

Время: 06:05.
© OSzone.net 2001-