基于批处理文件中的IE版本号进行操作

时间:2013-09-17 16:29:31

标签: batch-file

有人可以帮我理解为什么我得错了输出......

@echo off
setlocal ENABLEEXTENSIONS
set KEY_NAME="HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer"
set VALUE_NAME="Version"
For /F "tokens=3*" %%A IN ('REG QUERY %KEY_NAME% /v %VALUE_NAME%') Do (
 set versionNumber=%%A
)
echo %versionNumber%
if %versionNumber% GEQ 10 echo %versionNumber%
pause

输出:
    9.10.9200.1686
    9.10.9200.1686
    请按任意键继续。 。 。

输出应该只打印versionNumber一次。您是否可以将注册表键值视为整数,并在进行GEQ 10比较时执行上述操作?

让我知道......

感谢您的帮助!

2 个答案:

答案 0 :(得分:5)

@echo off
setlocal ENABLEEXTENSIONS
set "KEY_NAME=HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer"
set "VALUE_NAME=Version"
For /F "tokens=2*" %%A IN ('REG QUERY "%KEY_NAME%" /v "%VALUE_NAME%"') Do (
 set "versionNumber=%%B"
)
for /f "delims=." %%a in ("%versionNumber%") do set "versionNumber=%%a"
echo %versionNumber%
if %versionNumber% GEQ 10 echo %versionNumber%
pause

答案 1 :(得分:0)

根据http://support.microsoft.com/kb/969393,上述答案仅适用于IE9

将该答案与此https://stackoverflow.com/questions/21549699/internet-explorer-11-detection-from-batch-file

结合起来
@echo off
setlocal ENABLEEXTENSIONS
set versionNumber=3
set regquery=reg query "HKLM\Software\Microsoft\Internet Explorer" /v svcVersion
for /f "tokens=3" %%a in ('%regquery%') do (
  for /f "tokens=1 delims=." %%b in ("%%a") do (
    if %%b GEQ 10 (
       set versionNumber=%%b
    )
  )
)
if %versionNumber% LSS 10 (
  set regquery=reg query "HKLM\Software\Microsoft\Internet Explorer" /v Version 
  for /f "tokens=3" %%a in ('%regquery%') do (
    for /f "tokens=1 delims=." %%b in ("%%a") do (
      set versionNumber=%%b
    )
  )    
)
ECHO IE Version %versionNumber%
if %versionNumber% GEQ 10 ECHO Internet explorer 10 or higher

我在开始时将versionNumber设置为3,因为IE4之前没有在注册表中设置版本而不是任何人可能会找到IE3或者这些天早期