有人可以帮我理解为什么我得错了输出......
@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比较时执行上述操作?
让我知道......
感谢您的帮助!
答案 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或者这些天早期