VBScript для определения строки реестра и запуска командного файла? - PullRequest
0 голосов
/ 09 января 2012

Я довольно новичок в написании сценариев с VBScript. Я пытался написать что-то, чтобы удалить программу, на которой установлены три разные версии. Единственный способ, с помощью которого я легко различил эти три версии, - это раздел реестра со строковым значением, у которого есть номер версии.

Я подумал, что напишу скрипт, который проверит реестр, чтобы увидеть, какая версия показывается через эту строку. Тем не менее, каждый скрипт, который я нахожу, в основном должен выяснить, существует ли ключ, а не строка, и не позволяет мне вызывать функцию для запуска моих пакетных скриптов. Ниже приведен один сценарий, который я обнаружил, который может / не может быть началом того, что я хочу сделать. Помощь ?????

HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Metalogix \ PAM4Exchange Надстройка Outlook \ - это ключ, строка - AddInVersion, REG_SZ, затем номер версии.

    Dim WshShell:Set WshShell = CreateObject("WScript.Shell")

WScript.echo RegistryValueExists ("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\")


Function RegistryValueExists (RegistryValue)
  'Ensure the last character is NOT a backslash (\) - if it is, we aren't looking for a value
  If (Right(RegistryValue, 1) = "\") Then
    'It's not a registry value we are looking for
    RegistryValueExists = false
  Else
    'If there isnt the value when we read it, it will return an error, so we need to resume
    On Error Resume Next

    'Try reading the value
    WshShell.RegRead RegistryValue

    'Catch the error
    Select Case Err
      Case 0:
        'Error Code 0 = 'success'
        RegistryValueExists = true
      Case Else
        'Any other error code is a failure code
        RegistryValueExists = false
    End Select

    'Turn error reporting back on
    On Error Goto 0
  End If
End Function

1 Ответ

0 голосов
/ 10 января 2012

Правда в том, что вам не нужен VBScript для этого.Вы можете прочитать это значение реестра непосредственно из пакетного файла.

for /f "usebackq tokens=2,3*" %%A in (`REG QUERY "HKLM\SOFTWARE\Wow6432Node\Metalogix\PAM4Exchange Outlook Addin" /v "AddInVersion"`) do if %%A==REG_SZ set AddInVersion=%%B
echo %AddInVersion%

Вам просто нужно добавить код, который будет вызывать ваши пакетные сценарии, например:

if "%AddInVersion%"=="1.0" call uninstall1.bat
if "%AddInVersion%"=="2.0" call uninstall2.bat
...