下面的脚本是为了检查teamviewer是否被安装,以及什么样的体系结构,它将会把它转换成十进制并将其打印到一个文件中。
每次,无论是否安装,此脚本的结果是“Teamviewer未安装”
我在这个脚本中找不到逻辑错误。
reg query "HKLM\Software\TeamViewer" /v "ClientID" if %ERRORLEVEL% == 1 ( reg query "HKLM\Software\Wow6432Node\TeamViewer" /v "ClientID" if %ERRORLEVEL% == 1 ( echo TEAMVIEWER NOT INSTALLED >> %computername%.nfo ) else ( for /f "tokens=3" %%a in ('reg query "HKLM\Software\Wow6432Node\TeamViewer" /v "ClientID"') do ( set /a decimal=%%a + 0 echo TEAMVIEWER ID: >> %computername%.nfo echo %decimal% >> %computername%.nfo ) ) ) else ( for /f "tokens=3" %%a in ('reg query "HKLM\Software\TeamViewer" /v "ClientID"') do ( set /a decimal=%%a + 0 echo TEAMVIEWER ID: >> %computername%.nfo echo %decimal% >> %computername%.nfo ) )
在代码块内执行任何命令之前进行扩展。 基本上,放在一组括号内的任何东西。
因为errorlevelvariables在第二个reg query命令执行之前已经展开,所以第二个reg query的结果不会影响放在括号内的if命令的expression式。
幸运的是, errorlevelvariables有一个特殊的function。 if命令可以使用它,而不扩展它。
:: This is true when %errorlevel% >= 1 if errorlevel 1 ( :: This is true when %errorlevel% <= 0 if not errorlevel 1 (