检测操作系统批处理

时间:2013-12-13 21:52:47

标签: windows batch-file operating-system

我需要一个可以显示正在运行的操作系统的批处理脚本,因为我正在制作一个程序,它的作用受到它运行的操作系统OS的影响很大。我需要它来测试的是:

Windows 8 32bit
Windows 8 64bit
Windows 7 32bit
Windows 7 64bit
Windows vista 32bit
Windows vista 64bit
Windows xp
Other

有谁知道我能做什么,因为我不知道从哪里开始?

5 个答案:

答案 0 :(得分:3)

在cmd提示符下键入以下命令

ver

这将列出微软Windows版本。您只需相应地将每个版本映射到您的功能。

如果您需要更多详细信息,systeminfo命令会输出一堆信息。

您可能想要过滤它。例如,获取版本+ Service Pack信息+处理器体系结构:

systeminfo | findstr /B /C:"OS Name" /C:"OS Version" /C:"System Type"

在我的机器上输出以下内容:

 OS Name:                   Microsoft Windows 7 Enterprise
OS Version:                6.1.7601 Service Pack 1 Build 7601
System Type:               x64-based PC

答案 1 :(得分:3)

"Determining OS version via Scripting"复制:

@echo off
setlocal EnableDelayedExpansion

::Identify OS
for /F "delims=" %%a in ('ver') do set ver=%%a
set Version=
for %%a in (95=95 98=98 ME=ME NT=NT 2000=2000 5.1.=XP 5.2.=2003 6.0.=Vista 6.1.=7 6.2.=8) do (
   if "!Version!" equ "this" (
      set Version=Windows %%a
   ) else if "!ver: %%a=!" neq "%ver%" (
      set Version=this
   )
)

::Identify bit
if exist "%SYSTEMDRIVE%\Program Files (x86)" (
   set Type=64 bit
) else (
   set Type=32 bit
)

::Display result
echo %Version% %Type%
echo/
pause

答案 2 :(得分:2)

使用ver命令,然后使用“|”

进行过滤

例如

ver|find "6.1" >nul && echo/Windows XP

答案 3 :(得分:2)

检测Windows版本,创建变量 OS_VERSION

@echo off
@break off
@title Detect Windows Version - Create Variable = OS_VERSION
@color 0a
@cls

ver | findstr /i "5\.0\.">nul
if %ErrorLevel% EQU 0 set "OS_VERSION=2000"

ver | findstr /i "5\.1\.">nul
if %ErrorLevel% EQU 0 set "OS_VERSION=XP"

ver | findstr /i "5\.2\.">nul
if %ErrorLevel% EQU 0 set "OS_VERSION=2003"

ver | findstr /i "6\.0\.">nul
if %ErrorLevel% EQU 0 set "OS_VERSION=Vista"

ver | findstr /i "6\.1\.">nul
if %ErrorLevel% EQU 0 set "OS_VERSION=7"

ver | findstr /i "6\.2\.">nul
if %ErrorLevel% EQU 0 set "OS_VERSION=8"

echo %OS_VERSION%
pause
exit

检测Windows BITS,创建变量 OS_BITS

@echo off
@break off
@title Detect Windows BITS - Create Variable = OS_BITS
@color 0a
@cls

if "%ProgramW6432%" EQU "%ProgramFiles%" if "%CommonProgramW6432%" EQU "%CommonProgramFiles%" if defined ProgramFiles(x86) if exist "%SystemRoot%\SysWOW64\" (
  set "OS_BITS=64"
) else (
  set "OS_BITS=32"
)

echo %OS_BITS%
pause
exit

PS:在Windows XP x86,Windows 7 x86,Windows 7 x64,Windows 8 x64,Windows 2008 x64中测试

答案 4 :(得分:1)

与ver相比,WMIC是更好的方法,因为它包含了体系结构要求。

wmic os get caption, OSArchitecture, version

结果

Caption                       OSArchitecture  Version
Microsoft Windows 7 Ultimate  64-bit          6.1.7600
编辑:我看到75inch在我发帖时更新了他的systeminfo命令。无论哪种方式都可行。