コマンドラインを使用して、システムがWindows 10であるかどうかを確認するにはどうすればよいですか?[複製]


32

インストーラーを作成するための古いプログラムであるInstallAnywhereを使用しています。Windows XPおよびWindows Vistaの場合にのみ、特定のファイルをインストールしたいと思います。

InstallAnywhereの制限により、これは不可能です。ルールに基づいて、ファイルが既にインストールされている場合にのみ、ファイルを削除することを決定できます。

そのルールの範囲内で、実行しているプラ​​ットフォームを確認できます。これにより、Windows XP、Windows Vista、Windows 7などを確認できますが、Windows 10は確認できません。システムがXPまたはVistaではない場合のアクション」なので、「XPまたはVistaではないすべてのプラットフォームでこのアクションを実行する」と言う必要があります。

ただし、コマンドラインコマンドを起動して結果をキャッチすることができますので、ここに私の質問があります:Windows 10システムで作業しているかどうかを判断するために使用できるコマンドはありますか?


winvercmdまたはStartを入力すると、[Windowsについて]ダイアログが表示されます。それはうまくいくでしょうか?または-stackoverflow.com/questions/1792740/…–
鉄人

返信いただきありがとうございますが、コマンドラインで答えを出すコマンドラインコマンドを探しています。メッセージボックスがポップアップするときに、バッチタイプで情報を使用することはできません。
ドミニク

cmd.exeのバージョンを確認します。これは、少なくともXP以降で最も簡単でサポートされています。それについて質問があります。
KeyWeeUsr

2
Google cmdバージョン、各osには異なるバージョン番号があり、それを確認でき、不必要な長いスクリプトや別のプログラムは必要ありません- ここで
-KeyWeeUsr

5
と入力するだけですver。たとえば、Windows 7システムでは、「Microsoft Windows [Version 6.1.7601]」というメッセージが表示され、Windows 7(バージョン番号6.1)を実行していることがわかります。
アンドレアスレイブランド

回答:


54

Windows 10システムで作業しているかどうかを判断するコマンドはありますか?

を使用できますwmic

次のコマンドは、Windowsバージョンを返します。

wmic os get Caption | findstr /v Caption

出力例:

F:\test>wmic os get Caption | findstr /v Caption
Microsoft Windows 7 Home Premium

もう少し情報が必要な場合は、次のバッチファイル(GetOS.cmd)を使用できます。このバッチファイルは、取得して表示します。

  • オペレーティングシステムのバージョン
  • サービスパックのメジャーバージョン
  • アーキテクチャ(64または32ビット)
@echo off
setlocal
setlocal enabledelayedexpansion
set _os=
set _sp=
rem use findstr to strip blank lines from wmic output
rem get OS
for /f "usebackq skip=1 tokens=3" %%i in (`wmic os get caption ^| findstr /r /v "^$"`) do (
  set "_os=%%i"
  )
rem get Service Pack
for /f "usebackq skip=1 tokens=*" %%i in (`wmic os get ServicePackMajorVersion ^| findstr /r /v "^$"`) do (
  set "_sp=%%i"
  )
rem get Architecture
for /f "usebackq skip=1 tokens=*" %%i in (`wmic OS get OSArchitecture ^| findstr /r /v "^$"`) do (
  set "_bits=%%i"
  )
echo Operating System Version: %_os%
echo Service Pack Major Version: %_sp%
echo Architecture: %_bits%
endlocal

OSバージョンはに保存され%_os、Service Packメジャーバージョンはに保存され%_sp%、アーキテクチャはに保存され%_bits%ます。

ノート:

  • テストするOSとService Packのすべての組み合わせがないため、完全にはテストされていません。

  • このforコマンドは、OSの3番目の部分(トークン)のみを取得します。これはデスクトップバージョンで機能します(Server 2008を他のバージョンと区別する場合は、別のソリューションを見つける必要があります)。

  • %_os次のいずれかの値に設定されます:ServerVista788.1または10

出力例:

F:\test>GetOS
Operating System Version: 7
Service Pack Major Version: 1
Architecture: 64-bit

F:\test>

参考文献


2
いくつかのテストの後、次のコマンドを使用することにしwmic os get Caption | findstr /V Caption
Dominique

@DavidPostillバッチファイルをテストしました。ウィンドウを閉じる前に出力を読み取る機会をユーザーに与えるには、pause前に必要があると思いendlocalます。それはあなたにも続きますか?
マシュー

1
@Matthew他のシステムがバッチファイルを実行し、その出力をキャプチャする(または、既存のコマンドプロンプトウィンドウから手動で呼び出される)と予想されます。
-TripeHound

cmdプロンプトから@mathew pauseを実行する必要はありません。答えは、すべてのシナリオに合うのではなく、テクニックを示すことです。
DavidPostill

1
@mathewファイルと種類getos保存した場所プロンプトcmdを開く
DavidPostill

35

私はこれほど長くてverコマンドが信じられない

C:\>ver

Microsoft Windows [Version 10.0.10586]

C:\>

リダイレクトで機能するので

ver | find "Version 10."

ただし、通常は「このバージョンおよびすべての将来のバージョン用」と記述する必要があります。そのため、以前のバージョンを列挙する方がよいでしょう。


FYI verはPowerShell では機能しませ。これは、あるCMD特定。
ケルタリ

3
@Keltariしかしiex "ver"そうです!
ベンN

の出力はver少し誤解を招く可能性があります。私が今座っているマシンでは戻りますMicrosoft Windows [Version 6.1.7601]。しかし、Windows 6ではなくWindows 7を実行していると確信しています。
Philipp

@Philippはい、Windows 7およびVistaはそれぞれVista、6.1および6.2の「本当に」パッチリリースです。メジャーバージョンバンプは厳密にマーケティングです。Windows 10の変更がメジャーバージョンバンプを保証するほど重要であるかどうかはわかりません。(ハードラインソフトウェアエンジニアリングの観点から、ソフトウェアのメジャーバージョンは、下位互換性の中断を示すためにのみバンプする必要があります。大きなメジャーバージョンは悪いことになります。残念ながら、マーケティング部門は多数を好みます。)
zwol

1
@Philipp-バージョン番号からマーケティング名へのマップを簡単に見つけることができます。たとえば、ここ
-davidbak

18

システム情報

オペレーティングシステム、システムタイプ(32/64ビット)などの多くの有用な情報を取得します。

ここに画像の説明を入力してください


はい、私systeminfoもお勧めします。上の画像からわかるように、オペレーティングシステムと必要な他の情報が表示されます。
マシュー

3
早速のお返事ありがとうございます。systeminfo確かに私が探している情報を提供します(したがって、賛成票)が、かなり時間がかかります(私のPCでは15秒以上かかります)。そのためwmic、次の回答にある解決策を選択しました。
ドミニク

1
これは、私は彼らが上で実行されているOS /バージョンを見つけるために必要があるとき、私は実行するために人々を尋ねるものです:cmd /c systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
アンドリューSavinykh

1
システム情報の出力は、あなたがしたい場合はOTが大規模にそれを実行するので、かなり役に立たない言語に依存している
ステファン・

1

InstallAnywhereの経験はありませんが、コマンドラインを使用してインストールされているOSを確認するための2つのオプションがあります。

  1. Cmdを使用する

    systeminfo.exe
    

    コマンドを使用するとsysteminfo.exe、フィールドの下に結果が表示されますOS Name。これにより、必要以上の情報が得られる場合があります。

    このコマンドの詳細については、Microsoft TechNetを参照してください

  2. パワーシェル

    または、次のPowershellスクリプトを使用して、必要な情報を正確に返すこともできます。

    Get-CimInstance Win32_OperatingSystem | Select-Object  Caption | ForEach{ $_.Caption }
    
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.