
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
No.2ベストアンサー
- 回答日時:
まず、
>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
No.1
- 回答日時:
簡略化はわかりませんが、
>if %ERRORLEVEL% == 0 GOTO verup_start
>if %ERRORLEVEL% == 1 GOTO XP_SP3
ERRORLEVELは値の大きい方から聞かないと駄目です。ERRORLEVELの比較は常に"以上"で成立しますから。
http://support.microsoft.com/kb/39585/ja
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- PHP php エラー 2 2022/10/23 16:43
- その他(プログラミング・Web制作) Windowsのバッチファイルについてご教示ください 5 2023/07/25 20:23
- その他(プログラミング・Web制作) 単純なコマンドプロンプトが動きません。 2 2022/04/19 15:21
- Visual Basic(VBA) 【VBAエラー】Nextに対するForがありません 対策について 5 2022/11/21 21:26
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- その他(プログラミング・Web制作) zshの例外処理 1 2022/06/02 16:36
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CMDの「Explorer」
-
バッチで自動的にディレクトリ...
-
【Bシェル】戻り値取得について
-
バッジファイルで複数のコマン...
-
IEのバージョンチェックとバー...
-
バッチファイルでDirで取得した...
-
バッチファイル テキストファイ...
-
DOSプロンプトで2つプログラム...
-
マクロ機能のあるFTPクライアン...
-
MS-DOSのバッチで変数を使いたい
-
バッチでテキストファイルから...
-
絶対パス名からファイル名を取...
-
大量のフォルダからひとつのフ...
-
コマンドプロンプトの「%1」と...
-
コマンドプロンプトのエラーに...
-
'msimg32.lib'は通常どこにある...
-
AccessへのCSVファイルの取...
-
バッチファイルで配列を使いたい
-
EXCELを使ったファイル削除
-
binファイルを解凍したいの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチでテキストファイルから...
-
バッチファイルで昨日の日付を取得
-
子バッチ内のキー入力処理へ自...
-
バッチファイルでDirで取得した...
-
コマンドプロンプト標準出力と...
-
バッチファイルで常に最新の現...
-
DOSのバッチで、変数中のファイ...
-
VBアプリケーションで終了コー...
-
コマンドプロンプトで2ヶ月前3...
-
IPアドレスの第3オクテットだ...
-
コマンドプロンプト画面の閉じ...
-
コマンドプロンプト(バッチファ...
-
絶対パス名からファイル名を取...
-
バッチファイル テキストファイ...
-
Excelで住所録を地域ごとに振り...
-
コマンドプロンプトでファイル...
-
batの変数を直接vbsのプログラ...
-
echoとsystem関数について
-
コマンドプロンプト(バッチ)...
-
呼び出し元バッチを知るには?
おすすめ情報