【发布时间】:2014-09-04 18:39:26
【问题描述】:
此站点包含大量信息,我找到了一些很好的解决方案,但它们都是我需要的部分(无序)。 Adobe 最近为 Acrobat 发布了一个安全修复程序,不幸的是它是一个小补丁,并且还需要以前的补丁版本。 详细信息 - 要更新到 Acrobat 11.0.08,您必须安装 11.0.07。 有些机器有 11.0.06 及以下版本。幸运的是,除了安装 11 的主要版本之外,11.0.07 没有任何先决条件。
我需要做的是检查机器是否有 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 "\\server\share\Logs\%computername%_acrobat_reader_11008.txt" goto gotit
rem Find generates an errorlevel of zero if it encounters a match.
Reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" /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 "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" /s ^| find "DisplayName" ^| find "Adobe Acrobat XI Pro" ^| find "DisplayVersion" ^| find "11.0.08"
if %errorlevel% EQU 0 (
goto gotit
) ELSE (
net use q: "\\server\share\Source\patches" /persistent:no
q:
msiexec /quiet /update Q:\AcrobatSecUpd11008.msp > "\\server\share\Logs\%computername%_acrobat_reader_11008.txt"
goto gotit
)
:wrongversion
Reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" /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: "\\server\shareSource\patches" /persistent:no
q:
msiexec /quiet /update Q:\AcrobatUpd11007.msp > "\\server\share\Logs\%computername%_acrobat_reader_11008.txt"
goto got7
)
:gotit
pause
不幸的是,注册表字符串值是分开的。 DisplayName 仅显示“Adobe Acrobat XI Pro”,因此有多个“查找”请求。
【问题讨论】:
-
所以 - 有问题吗?看来您已经有了解决方案。
-
它似乎无法正常工作。忽略一些陈述。我已经在 08 版的计算机上对其进行了测试,但它仍然可以进行安装。
-
您的多个 find 语句并不像您想象的那样工作。带有显示名称的第一个查找将输出类似
Adobe Acrobat XI Pro的文本,第二个查找将输出Adobe Acrobat XI Pro上的过滤器。最后一次查找只有Adobe Acrobat XI Pro行作为输入。之前的 find 命令已经过滤掉了其他所有内容。
标签: batch-file find registry updates