最近使用神網進行軟體的派送,在執行bat檔上遇到了些問題,目的是更改Adobe的AcrobatReader更新模式。
HKEY_LOCAL_MACHINE.....4-AC0F074E4100}(aacrobat機碼)下MODE的值決定更新模式,因為希望統一版本在安裝時的版號19.0.008.20071,
AcrobatReaderMode
Value Data為 0或1=不下載更新也不安裝、
2=會自動下載更新但由使用者決定安裝與否、
3(預設值)=自動下載更新並自動安裝、
4=當有更新時通知,但不會下載。
預設為3,如果不取消更新會自己升級20098或20065還有一些奇怪的版本。
在軟體按裝完成後自動執行以下bat檔。
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Adobe\Adobe ARM\Legacy\Reader\{AC76BA86-7AD7-1028-7B44-AC0F074E4100}" /v "Mode" /d "0" /t REG_DWORD /f
目前遇到的狀況是軟體安裝完成後,bat檔會直接啟動,可是這時候Acrobat的登入檔還沒有產生,所以都會失敗。
所以想在bat內加入判斷,Acrobat的登入檔是否已產生,如果沒有就跳回標記重新判斷重複N次直到更改完成。
@echo on
rem 將位置存入regpath
set regpath="HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Adobe\Adobe ARM\Legacy\Reader\{AC76BA86-7AD7-1028-7B44-AC0F074E4100}"
rem 將mode值存入modeX
set modeX=REG query %regpath% /v "Mode"
rem 這邊有問題,不知道怎麼正確地把mode的值存入變數裡
:re
rem 如果mod等於0x0
if %modeX% =="0x0"
rem 這邊不知道在reg_dword這種形態要輸入什麼數 :000000或0或0x0?
(
reg add %regpath% /v "Mode" /d "0" /t REG_DWORD /f
echo "change ok"
goto :end
)
else
(
echo "no found go back"
goto :re
)
:end
rem 加入次數判斷,超過n次goto :end並產生更新失敗log.txt
@pause
想請教上面的兩個問題。
有用過bat呼叫.reg檔但也會發生一樣的狀況。
109/6/16
卡了很久還是沒不知道怎麼正確的將值匯入變數在判斷reg是否存在,最後改用vbs呼叫bat/reg檔來執行,直接在vbs裡面加入sleep等待adobebat的reg生成。
留下一些紀錄參考,在等等看有沒有大神可以解答我的困惑。
以下是copy來的的程式
Dim WinScriptHost
Set WinScriptHost = CreateObject("WScript.Shell")
Wscript.Sleep 10000
WinScriptHost.Run Chr(34) & "C:\Temp\Acrobat\run_reg.bat" & Chr(34), 0
Set WinScriptHost = Nothing