2014-09-04 4 views
1

이 사이트는 풍부한 정보이며 몇 가지 훌륭한 솔루션을 찾았지만 내 필요성에 모두 부합합니다. 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 개가 이미 설치된 경우 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"만 표시하므로 여러 "찾기"요청이 표시됩니다.

+0

때문에 - 질문이? 이미 해결책이있는 것 같습니다. – ths

+0

제대로 작동하지 않는 것 같습니다. 몇 가지 진술을 무시하십시오. 나는 버전 08에있는 나의 컴퓨터에서 그것을 테스트했지만, 여전히 설치를한다. – MattG78

+0

여러 find 명령문이 생각대로 작동하지 않습니다. displayname을 가진 첫번째 발견은'Adobe Acrobat XI Pro'와 같은 텍스트를 출력 할 것이고, 두번째 발견은'Adobe Acrobat XI Pro'에서 필터를 찾을 것입니다. 마지막으로 발견 한 항목은 'Adobe Acrobat XI Pro'행만 입력합니다. 이전의 find 명령으로 다른 모든 것이 필터링되었습니다. – foxidrive

답변

0

귀하의 if %errorlevel% EQU 1 (과 직접적으로 관련이 있습니다. 나는 여기에 equ 0을 의미한다고 생각한다.

그러나이 구성을 어쨌든 사용하면 안되며 이상을 테스트하는 if errorlevel 1을 사용하는 것이 좋습니다.

또한 표시 이름을 필터링하면 다음 필터가의 버전 번호 을 제대로 찾을 수 없습니다. 이 라인을 따라

뭔가 작업을해야합니다 :

@ECHO off 
SETLOCAL enabledelayedexpansion 
for /F "usebackq tokens=*" %%a in (`Reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall /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 
) 
+0

감사의 인사를 전합니다. 다시 시도해보고 알려 드리겠습니다. – MattG78

+0

죄송하지만 현재 배치에 주입하는 데 문제가 있습니다. – MattG78

+0

괜찮습니다. 사과하실 필요가 없습니다. – ths

관련 문제