こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

IEのバージョンチェックとバージョンアップでBATの簡略化

IEのバージョンチェックとバージョンアップでBATの簡略化

タイトルの通りで、なんとか仕事で使っている端末のバージョンチェックと
条件に合わない場合、バージョンアップするBATを作りました。
目的の作業は出来ますが、まだまだ勉強不足で簡略化するとしたら
どのように短く出来ますか?
お時間あるかたいましたらご教授下さい。


@echo off
CLS
echo IE ver6.0 の場合、IE7.0にアップグレードされます。
echo 実行続けますか?
echo 中止:CTRL + C
pause

rem マウント
net use T: \\server\setup$\microsoft\IE

echo IEバージョン情報出力
REG QUERY "HKLM\SOFTWARE\Microsoft\Internet Explorer" /v "version" >
%temp%\IEverchek.log

:XP_SP2
C:
CD %temp%
find IEverchek.log "6.0.2900.2180"
if %ERRORLEVEL% == 0 GOTO verup_start
if %ERRORLEVEL% == 1 GOTO XP_SP3

:XP_SP3
C:
CD %temp%
find IEverchek.log "6.0.2900.5512"
if %ERRORLEVEL% == 0 GOTO verup_start
if %ERRORLEVEL% == 1 GOTO IE7

:IE7
C:
CD %temp%
find IEverchek.log "7.0.5730"
set message=環境は「IE 7.0 」の環境でした。
if %ERRORLEVEL% == 0 GOTO END
if %ERRORLEVEL% == 1 GOTO IE8

:IE8
C:
CD %temp%
find IEverchek.log "8.0.6001"
set message=環境は「IE 8.0 」の環境でした。
if %ERRORLEVEL% == 0 GOTO END
if %ERRORLEVEL% == 1 GOTO Error

:verup_start
for /f "tokens=2 delims=[" %%i in ('ver') do set ver1=%%i
for /f "tokens=2" %%i in ('echo %ver1%') do set ver2=%%i
for /f "tokens=1-2 delims=. " %%i in ( 'echo %ver2%' ) do set OSVER=%%i.%%j
rem -------%OSVER% Win2k=5.00 XP=5.1 XPx64=5.2-----------
set OS_TYPE=""
if "%OSVER%" == "5.1" set OS_TYPE=32
if "%OSVER%" == "5.2" set OS_TYPE=64

echo installing IE7.0 %OS_TYPE%bit.....
echo please wait.....

T:
start /wait "" "IE7-WindowsXP-x%OS_TYPE%.exe" /passive /forcerestart
/update-no
goto verupend

:Error
echo Internet Explorer のレジストリキーが見つかりません。
echo 必要なら手動でインストールしてね。
pause
exit

:END
echo.
echo チェックOK
echo %message%終了します。
echo.
pause
exit
:verupend
echo.
echo バージョンアップしました
echo.
pause
exit

投稿日時 - 2010-08-31 02:11:02

QNo.6147915

暇なときに回答ください

質問者が選んだベストアンサー

まず、
>ERRORLEVELは値の大きい方から聞かないと駄目です。ERRORLEVELの比較は常に"以上"で成立しますから。
は勘違いですね。これは、IF %ERRORLEVEL% == 0 とかじゃなくて、IF ERRORLEVEL 1 というまったく別の構文の話です。

本題に戻って、動いているので、これでいいと思うのですが。
変えるとしたら、

@echo off
cd /d %TEMP%
cls
echo IE ver6.0 の場合、IE7.0にアップグレードされます。
echo 実行続けますか?
echo 中止:CTRL + C
pause

echo IEバージョン情報出力
set VER=
for /f "skip=4 tokens=3" %%A in ('REG QUERY "HKLM\SOFTWARE\Microsoft\Internet Explorer" /v "version"') do set VER=%%A
if not defined VER goto Error
if "%VER:~0,1%" == "7" (
set message=環境は「IE 7.0 」の環境でした。
goto END
)
if "%VER:~0,1%" == "8" (
set message=環境は「IE 8.0 」の環境でした。
goto END
)
if not "%VER:~0,1%" == "6" goto Error

for /f "tokens=2 delims=[" %%i in ('ver') do set VER1=%%i
for /f "tokens=2" %%i in ("%VER1%") do set VER2=%%i
rem -------Win2k=5.00 XP=5.1 XPx64=5.2-----------
set OS_TYPE=
if "%VER2:~0,3%" == "5.1" set OS_TYPE=32
if "%VER2:~0,3%" == "5.2" set OS_TYPE=64

echo installing IE7.0 %OS_TYPE%bit.....
echo please wait.....

rem マウント
net use T: \\server\setup$\microsoft\IE
T:
start /wait "" "IE7-WindowsXP-x%OS_TYPE%.exe" /passive /forcerestart /update-no
goto verupend

:Error
echo Internet Explorer のレジストリキーが見つかりません。
echo 必要なら手動でインストールしてね。
pause
exit /b
:END
echo.
echo チェックOK
echo %message%終了します。
echo.
pause
exit /b
:verupend
echo.
echo バージョンアップしました
echo.
pause
exit /b

投稿日時 - 2010-09-01 00:19:50

ANo.2

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

簡略化はわかりませんが、
>if %ERRORLEVEL% == 0 GOTO verup_start
>if %ERRORLEVEL% == 1 GOTO XP_SP3
ERRORLEVELは値の大きい方から聞かないと駄目です。ERRORLEVELの比較は常に"以上"で成立しますから。
http://support.microsoft.com/kb/39585/ja

投稿日時 - 2010-08-31 13:12:30

あなたにオススメの質問