2012-01-09 7 views
0

私はVBScriptを使用したスクリプト作成でかなり新しいです。私がしようとしてきたことは、3つの異なるバージョンがインストールされているプログラムを削除することです。 3つのバージョンを簡単に区別できる唯一の方法は、バージョン番号を持つ文字列値を持つレジストリキーです。レジストリ文字列とキックオフバッチファイルを決定するVBScript?

私は、レジストリをチェックして、その文字列を通してどのバージョンが表示されていたかを確認するスクリプトを作成すると思いました。しかし、私が見つけた各スクリプトは基本的に、文字列ではなくキーが存在するかどうかを知ることであり、バッチスクリプトを起動する関数を呼び出すことはできません。以下は私が見つけた1つのスクリプトであり、私がやりたいことの始まりではないかもしれません。助けて?????

HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Metalogix \ PAM4Exchange Outlook Addin \はキーで、文字列は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 

答えて

0

本当にこれを達成するために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 
+0

感謝を!私はあなたの助けに感謝します! – sarahmail79

関連する問題