web-dev-qa-db-ja.com

バッチファイル:OSがWindows 10かどうかを確認する

次の操作を実行するバッチファイルを作成したいと思います。実行中のOSがWindowsかどうかを確認します。それよりも大きい場合はHello. Im win 10 elseは他のメッセージを出力する必要があります。どうすればこれを行うことができますか?

疑似コード:

if OS == Win10 then
   echo Hello im win 10
else
   echo I am another os
10
Martin Rezyne
setlocal
for /f "tokens=4-5 delims=. " %%i in ('ver') do set VERSION=%%i.%%j
if "%version%" == "6.3" echo Windows 8.1
if "%version%" == "6.2" echo Windows 8.
if "%version%" == "6.1" echo Windows 7.
if "%version%" == "6.0" echo Windows Vista.
if "%version%" == "10.0" echo Windows 10.
echo %version%
rem etc etc
endlocal
19
Vertexwahn

もう少し詳しく知りたい場合:

for /f "tokens=2 delims=," %%i in ('wmic os get caption^,version /format:csv') do set os=%%i
echo Hello, I am %os%

または、単に要件を満たすために:

for /f "tokens=2 delims=," %%i in ('wmic os get caption^,version /format:csv') do set os=%%i
echo %os%|find " 10 ">nul &&echo Hello I'm Windows 10||echo I am another os

,versionは、希望する文字列が最後のトークンではないことを保証します。これには、醜いwmic行末が含まれます)

5
Stephan

Vertexwahnのスクリプトを改善して、より多くのWindowsバージョンをサポートしました。

setlocal
for /f "tokens=2 delims=[]" %%i in ('ver') do set VERSION=%%i
for /f "tokens=2-3 delims=. " %%i in ("%VERSION%") do set VERSION=%%i.%%j
if "%VERSION%" == "5.00" echo Windows 2000
if "%VERSION%" == "5.0" echo Windows 2000
if "%VERSION%" == "5.1" echo Windows XP
if "%VERSION%" == "5.2" echo Windows Server 2003
if "%VERSION%" == "6.0" echo Windows Vista
if "%VERSION%" == "6.1" echo Windows 7
if "%VERSION%" == "6.2" echo Windows 8
if "%VERSION%" == "6.3" echo Windows 8.1
if "%VERSION%" == "6.4" echo Windows 10
if "%VERSION%" == "10.0" echo Windows 10
echo %VERSION%
endlocal
2
MarekJ47

早くて簡単...

wmic OS get OSArchitecture,caption | FIND "10" >nul || GOTO Not_Win10

:: Your Program...

:Not_Win10
ECHO Not Compatible
pause
exit

ラベルを使用しない場合/ Goto:

wmic OS get OSArchitecture,caption | FIND "10" >nul || ECHO System not Windows 10 && TIMEOUT 3 >nul && EXIT

ECHO System is Windows 10.
pause
::: Your Program
0
T3RR0R

別の簡単な方法:

@Echo Off
SystemInfo | Find "OS Name:" >tmp.txt
Type tmp.txt | Find "10" >nul 2>&1  || (
  Del tmp.txt
  Echo OS Not Windows 10
  Pause 
  Exit /B
)

Del tmp.txt

:: Main Program
0
Wasif Hasan