Estou perguntando qual o melhor método para saber se o office está instalado ou não no windows em lote?
Então, eu crio este arquivo de lote para saber qual versão do word está instalada!
Minha pergunta: Existe algum outro método em lote que você conheça para descobrir se o Office está instalado no Windows e qual versão?
@echo off
Title Check if Word Office is installed or Not ? And Which Version Number ?
@for /f "skip=2 tokens=3 delims=." %%a in (
'reg query "HKEY_CLASSES_ROOT\Word.Application\CurVer" /f App*'
) do (
Set "VerNumber=%%a.0"
)
SetLocal EnableDelayedExpansion
If defined VerNumber (
If [!VerNumber!] EQU [11.0] (Set "MSOffice=Office 2003")
If [!VerNumber!] EQU [12.0] (Set "MSOffice=Office 2007")
If [!VerNumber!] EQU [14.0] (Set "MSOffice=Office 2010")
If [!VerNumber!] EQU [15.0] (Set "MSOffice=Office 2013")
If [!VerNumber!] EQU [16.0] (Set "MSOffice=Office 2016+")
Color 0B & echo Word Application is installed ("!MSOffice!"^) (VerNumber="!VerNumber!"^)
) else (
Color 0C & echo Word Application is not installed ! & Timeout /T 3 /Nobreak>nul & Exit /B
)
EndLocal
Pause & Exit /B
As perguntas vinculadas no comentário respondem apenas pela versão do Office quando instaladas, mas realmente não tentam responder quando não há nenhuma versão instalada
No meu teste, sua variável está sempre definida mesmo quando você não tem o Office instalado....
Adicione em seu
For /f
loop o2>nul
redirecionador e seu loop não retornará nenhuma string que defina sua variável ...vc
if defined
nao esta funcionando....