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 を 1 回だけ出力する必要があります。レジストリ キーの値を整数のように扱って、上記のように 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

IE4 以前はレジストリにバージョンが設定されていなかったので、最初に versionNumber を 3 に設定しました。

于 2015-01-09T17:27:05.657 に答える