|
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を識別する考えでいます。 というのも、社内では複数のシステム担当者がいるので、 判断のロジックを分かりやすくしたいからです。 どうもありがとうございました。 |