【问题标题】:cmd Reg Query (dword) if = (specific#) then goto () else goto ()cmd Reg 查询(dword) if = (specific#) then goto() else goto()
【发布时间】:2013-09-20 13:29:53
【问题描述】:

我正在尝试将软件部署到一组计算机以运行安装程序,前提是它们还没有不使用 GUID 识别的特定版本。我将使用不使用 GUID 的 Adob​​e 版本作为我正在尝试做的示例。

假设他们有 Adob​​e 9.3 - 但需要 Adob​​e 9.5 因此,我对标识其当前安装版本的两个 dword 之一进行了检查。当前代码如下:(使用回显响应测试)

:check1
@ECHO OFF
setlocal
set key="HKLM\Software\Wow6432Node\Adobe\Adobe Acrobat\9.0\Installer"
set value=VersionMax
:: delims is a TAB followed by a space
FOR /F "tokens=2* delims=    " %%A IN ('REG QUERY %key% /v %value%') DO SET base=%%B
if %base%=0x90005 && goto echo1 || goto echo2
:echo1
echo "Yes"
:echo2
echo "No"

所以, echo1 = True 所以转到下一个 dword 检查(这是相同的键 = 但不同的值 = 因为它的另一个 dword)如果那个也匹配跳过安装程序,否则转到安装程序 echo2 = False dword 十进制不等于要运行安装程序的 9.5 版本 dword。

我在这个过程中没有运气,我被告知我应该使用 VBscript...但我被告知使用 cmd 是可能的,这就是我更喜欢的。 对此的任何帮助将不胜感激。谢谢

【问题讨论】:

    标签: batch-file cmd registry regedit


    【解决方案1】:

    在尝试之前设置%value2%%base2%

    @ECHO OFF &SETLOCAL
    :check1
    set "key=HKLM\Software\Wow6432Node\Adobe\Adobe Acrobat\9.0\Installer"
    set "value1=VersionMax"
    set "value2=Version (?)"
    :: delims is a TAB followed by a space: this are default delimiter
    FOR /F "tokens=2*" %%A IN ('REG QUERY "%key%" /v %value1%') DO SET "base1=%%~B"
    FOR /F "tokens=2*" %%A IN ('REG QUERY "%key%" /v %value2%') DO SET "base2=%%~B"
    if "%base1%"=="0x90005" if "%base2%"=="9.5 (?)" goto:NoInstall
    REM put your install code here
    :NoInstall
    REM Adobe v9 is already installed
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-16
      • 1970-01-01
      • 2013-05-22
      • 1970-01-01
      • 1970-01-01
      • 2010-10-25
      相关资源
      最近更新 更多