[前の記事]« ファイルを比較して、更新されたものだけコピーするには?
[次の記事]VBScriptの動作環境について »

関連オンラインソフト配布サイト:
Vector>ダウンロード(top) |>MS-DOSまたは汎用 | >WindowsVista/XP/2000/NT

▲カテゴリー「FOR /F」索引へ
▲カテゴリー「SYSTEMINFO,VER…システムやハードウェアの状況取得」索引へ

OS(Windows)のバージョン識別方法


688) OSの識別方法 パトレーゼ 2002/09/25(水) 16:15


バッチファイルの中で、環境変数や決定的なファイルの有無で、
簡単確実にうまく各OSを判断する方法はありませんか?


どういうことかというと、
外字ファイルや主要なショートカットファイルの
入換えをログオンスクリプトを利用して行っていますが、
10支店に5種類のOS(win95,98,NT40,2000,XP)のPCが
合計300台あります。

OS単位でメンテ場所(デスクトップ画面のあるフォルダ)が異なるので、OS単位にログオンスクリプトのバッチを作成し、必要に応じて環境変数を活用しながら、スクリプトでメンテを行っています。しかし、9X,NT系とバッチを2つ以上作成すると、
メンテしにくい時があります。
このため、共通的に1つのバッチを作成し、以下のようにiF文でOSを判断して
 IF win9xの場合  goto :LWin9x
 IF win2000の場合 goto :LWin2000
 IF winXPの場合  goto :LWinXP

例えば、デスクトップ画面のアイコンを入換える場合は、
win2000なら
COPY XXXXXX "%userprofile%\デスクトップ" と記述し、
95なら2000と同じ環境変数が使えないので、
COPY XXXXXX "C:\WINDOWS\デスクトップ"
と記述したいのです。いい判断方法はありませんか?



もし無ければ、300台のPCの特定フォルダに
以下のような識別ファイルを作成し、判断しようかなと思っています。
WIN9X.TXT
WIN40.TXT
WIN2K.TXT
WINXP.TXT


690) Re:OSの識別方法 ウォルフ 2002/09/25(水) 22:50


>バッチファイルの中で、環境変数や決定的なファイルの有無で、
環境変数で判別しました。
ただ、9x/NT4/2000でしたのでうまく行かないかも・・・・

取り敢えず各OSの環境変数を表示して眺めてみては?


692) Re:OSの識別方法 vampire 2002/09/26(木) 12:06


>バッチファイルの中で、環境変数や決定的なファイルの有無で、
>簡単確実にうまく各OSを判断する方法はありませんか?

既に回答が出ていますが、参考までに…。

御質問にぴったりとは当てはまりませんが、OSを判定する方法としてフリーソフトのBATUTY(BU)があります。
方法はBU.COMが有するISWIN機能を実行します。
具体的には
 bu iswin
とします。
これを実行すると以下のとおりリターンコードが返されます。

 Ret= 0 : リアルモードDOS
    3 : Windows 3.x
    4 : Windows 9x
    101 : Windows NT/2000

手許の環境(winXP,winNT)でテストしたら101が返ってきました。
XP,2000,NTの別は判別がつかないようですが、参考になれば幸いです。

BATUTYは清水洋平氏制作のフリーソフトです。
BU112A2.LZHをダウンロード・解凍し、BU.COMを適当なディレクトリーに入れて実行して見てください。

BU112A2.LZHは、以下にあります。
http://hp.vector.co.jp/authors/VA000007/bu.htm


696) Re:OSの識別方法 じゃく 2002/09/26(木) 15:06


パトレーゼさん、こんにちは

>このため、共通的に1つのバッチを作成し、以下のようにiF文でOSを判断して
> IF win9xの場合  goto :LWin9x
> IF win2000の場合 goto :LWin2000
> IF winXPの場合  goto :LWinXP

>例えば、デスクトップ画面のアイコンを入換える場合は、
>win2000なら
> COPY XXXXXX "%userprofile%\デスクトップ" と記述し、
>95なら2000と同じ環境変数が使えないので、
> COPY XXXXXX "C:\WINDOWS\デスクトップ"
>と記述したいのです。いい判断方法はありませんか?

ここで、環境変数 userprofile を使われるということなら、
9X系かNT系かはこれで判断して、残りはverコマンドで確認
されてはいかがでしょう。

if "%userprofile%"=="" goto LWin9X
for /f "tokens=1-3" %%i in ('ver') do set os=%%k
if "%os%"=="Version" goto LWinNT
if "%os%"=="2000" goto LWin2k
if "%os%"=="XP" goto LWinXP

verコマンドの表示内容は、FPCUのDOS/Vコマンドリファレンスを
参考にしました。XP上では動作確認しています。


727) Re2:OSの識別方法 パトレーゼ 2002/10/01(火) 17:10


ありがとうございます。

以下のOS識別バッチを以下の各PCでテストし、うまくいきました!
(Win9xは2台、NT4.0は2台、WiN2000は1台。XPは未テスト)

--------------------------------
if "%userprofile%"=="" goto :LWIN9X
for /f "tokens=1-3" %%i in ('ver') do set os=%%k
if "%os%"=="Version" goto :LWINNT
if "%os%"=="2000" goto :LWIN2K
if "%os%"=="XP" goto :LWINXP

:LWin9X
@ECHO "これはOS識別ファイル" > "c:\システム部門\WIN9X.OS"
goto :LOWARI
:LWinNT
@ECHO "これはOS識別ファイル" > "c:\システム部門\WINNT.OS"
goto :LOWARI

 以下省略

--------------------------------

最初に全PCで上記バッチをNTドメインLOGON時の共通バッチで実行し、
そのあとの日々のメンテ時は、以下のファイル
 c:\システム部門\WIN9X.OS" や
 c:\システム部門\WINNT.OS" や
 c:\システム部門\WIN2K.OS" 
をバッチで参照して、OSを識別する考えでいます。

というのも、社内では複数のシステム担当者がいるので、
判断のロジックを分かりやすくしたいからです。


どうもありがとうございました。
 
 


カテゴリー「FOR /F」索引へ
カテゴリー「SYSTEMINFO,VER…システムやハードウェアの状況取得」索引へ

 

カテゴリー一覧

FPCU/FPCDIY QUICK LINK online
この上の各ジャンル名をクリックすると、下のウィンドウが切り替わります▼


=リンク集のインデックスはこちら=

資料書籍

About

2002年09月25日 01:14に投稿されたエントリーのページです。

ひとつ前の投稿は「ファイルを比較して、更新されたものだけコピーするには?」です。

次の投稿は「VBScriptの動作環境について」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

This site is powered by Six Apart
Movable Type 3.33-ja
このブログについて | 運営:有限会社メディアポート