1

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

@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 比较,您能否不将注册表项值视为整数并执行上述操作?

让我知道...

谢谢您的帮助!

4

2 回答 2

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
于 2013-09-17T17:17:39.710 回答
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 或这些天的早期

于 2015-01-09T17:27:05.657 回答