ここから本文です

バッチファイル(~.BAT)の中でXPsp2とsp3を判定する方法を教えてください。

ricard_patrezeさん

2010/1/2705:13:40

バッチファイル(~.BAT)の中でXPsp2とsp3を判定する方法を教えてください。

社内の数百台のwindows XPのPCを、
sp2からsp3に更新している作業期間中に、

別途、
各PCを1個のバッチファイル(~.BAT)の中で
sp2かsp3なのかを判断して
別処理をする必要がでてきました。

(この1個のバッチファイルは、
sp3に更新していない日に実行させます)


つきましては、
この1個のバッチファイルの中で
各PCがその時、sp2かsp3なのかを動的に判断する方法を
教えてください。

但し、
以下の1と2以外で簡単な方法があれば、
教えていただきたいです。(^^;)


1.
個々のコンピュータ名で判断する方法

IF %computername% == コンピュータ名1 goto :sp2
IF %computername% == コンピュータ名2 goto :sp3

(作業期間中なので、sp2なのか3なのか流動的なので、完全ではない)


2.
sysinfo32実行させたログファイルの中をfindで見る方法
FIND "Windows XP sp2" ログファイル名
if eroorlevel==0 goto :sp2
goto :sp3

(sysinfo32実行させたログファイルを得るまで時間がかかるので、
この方法はできることなら、したくないです)

閲覧数:
1,741
回答数:
1

違反報告

ベストアンサーに選ばれた回答

編集あり2010/1/2713:24:01

レジストリ検索ツールを使ってHKLM内をService Pack 3で検索してみましたが、次の3つのうちのどれかが使えそうですね。一応、reg queryコマンドの記述にして使えそうな順で書いておきます。

reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CSDVersion

reg query "HKLM\SOFTWARE\Microsoft\Updates\Windows XP\SP3\KB936929" /v Description

reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Windows XP Service Pack" /v DisplayName

参考になりそうなbatのサンプルがバックアップの中から出てきましたので、それを応用して書いておきます。ブログにあったものを応用しました。一応、SP3でテストして問題が無かったので恐らくこの内容で宜しいかと思いますが、念の為SP2でもテストしてから使って下さい。

:START
@echo on
rem (コメント) テスト段階ではechoをonにします。

reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CSDVersion |find /c "Service Pack 3" >nul
rem (コメント) reg queryの結果をファイルに出力せずにパイプ処理でfindに渡します。
rem (コメント) reg queryの内容は、適宜置き換えて下さい。

if %errorlevel%==0 goto :SP3 else goto :SP2
rem (コメント) findの後の環境変数errorlevelの値は、指定した文字列との一致があった場合は場合は0を、無ければ1となります。

:SP2
echo このPCはSP3未適用です。
pause
end

:SP3
echo このPCはSP3適用済みです。
pause


参考サイト: ありの日記
http://d.hatena.ne.jp/hiro_nemu/comment?date=20090408

質問した人からのコメント

2010/1/28 14:57:24

ありがとうございます。
1番目の方法
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CSDVersion
がいまのところGOODです。

3番目は、工場出荷時からSP3のPCで実行させると
「エントリがない」といったメッセージがでたためです。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。