这个网站信息丰富,我找到了一些很棒的解决方案,但它们都是我需要的部分(无序)。Adobe最近发布了Acrobat的安全修复程序,不幸的是,这是一个小补丁,还需要以前的补丁版本。详细信息-为了更新到Acrobat 11.0.08,您必须安装11.0.07。某些机器的11.0.06及以下版本。幸运的是,11.0.07除了安装11的主要版本外,没有其他先决条件。
我需要做的是检查机器是11.0.07还是11.0.08。如果没有7或8,则安装7,然后安装8。如果已经安装了7,则安装8。如果已经安装了8,则不执行任何操作。升级文件在共享上,需要管理员权限才能安装,因此它将在需要更新的每台机器上手动运行。
我一起孵化了以下内容-
#@echo off
SETLOCAL
cls
rem Installing an update which results in Adobe Reader 11.0.08
echo.
echo.
echo Installing Acrobat Reader 11.0.07 update... please wait...
rem if exist "\servershareLogs%computername%_acrobat_reader_11008.txt" goto gotit
rem Find generates an errorlevel of zero if it encounters a match.
Reg query "HKLMSOFTWAREMicrosoftWindowsCurrentVersionUninstall" /s ^| find "DisplayName" ^| find "Adobe Acrobat XI Pro" ^| find "DisplayVersion" ^| find "11.0.07"
if %errorlevel% EQU 1 (
goto got7
) ELSE (
goto wrongversion
)
:got7
echo Installing 11.0.08 Update
Reg query "HKLMSOFTWAREMicrosoftWindowsCurrentVersionUninstall" /s ^| find "DisplayName" ^| find "Adobe Acrobat XI Pro" ^| find "DisplayVersion" ^| find "11.0.08"
if %errorlevel% EQU 0 (
goto gotit
) ELSE (
net use q: "\servershareSourcepatches" /persistent:no
q:
msiexec /quiet /update Q:AcrobatSecUpd11008.msp > "\servershareLogs%computername%_acrobat_reader_11008.txt"
goto gotit
)
:wrongversion
Reg query "HKLMSOFTWAREMicrosoftWindowsCurrentVersionUninstall" /s ^|find "DisplayName" ^| find "Adobe Acrobat XI Pro" ^| find "DisplayVersion" ^| find "11.0.08"
if %errorlevel% EQU 0 (
goto gotit
) ELSE (
echo Installing 11.0.07 Update
net use q: "\servershareSourcepatches" /persistent:no
q:
msiexec /quiet /update Q:AcrobatUpd11007.msp > "\servershareLogs%computername%_acrobat_reader_11008.txt"
goto got7
)
:gotit
pause
不幸的是,注册表字符串值是分开的。DisplayName只显示"Adobe Acrobat XI Pro",因此会有多个"查找"请求。
您的if %errorlevel% EQU 1 (
在查找返回时直接与您的rem相矛盾。我想你的意思是这里的0。
但无论如何都不应该使用此构造,最好使用测试1或更高的if errorlevel 1
。
此外,如果您为displayname进行筛选,则下一个筛选器无法很好地从这些结果中找到版本号。
沿着这些路线的东西应该起作用:
@ECHO off
SETLOCAL enabledelayedexpansion
for /F "usebackq tokens=*" %%a in (`Reg query HKLMSOFTWAREMicrosoftWindowsCurrentVersionUninstall /s /f "Adobe Acrobat XI Pro"`) do (
SET KEY=%%a
GOTO :next
)
:next
IF NOT "%KEY%" EQU "" (
FOR /F "usebackq tokens=1,3" %%a in (`Reg query %KEY% /f DisplayVersion`) do (
IF "%%a" EQU "DisplayVersion" SET VER=%%b
)
IF "!VER!" EQU "11.0.07" ECHO found
)