2013-12-13 3 views
1

Мне нужен пакетный скрипт, который может отображать ОС Windows, которые он запускает, потому что я делаю программу, и на ее работу сильно влияет ОС Windows. Те, мне нужно, чтобы проверить, являются:Обнаружение партии ОС

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

Кто-нибудь знает, что я мог сделать, так как я не знаю, с чего начать?

+0

Некоторые другие ответы на подобные вопросы использовали wmic. См. Http://stackoverflow.com/questions/16042339/os-name-variable –

+0

зачем использовать пакетный файл? какой lanugage вы пишете свою программу? Если вы используете .NET, вы можете обнаружить версию из кода –

+0

Я использую пакет, чтобы выполнить полную программу. – 09stephenb

ответ

3

Введите следующую команду в CMD быстрой

ver 

это перечислит Microsoft Windows версии. Вам просто нужно сопоставить каждую версию с вашей функциональностью.

Если вам нужна дополнительная информация, команда systeminfo выводит кучу информации.

Возможно, вам захочется отфильтровать его. Например, чтобы получить версию пакета обновления + информация + процессор архитектуры:

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 
+0

Это работает, но в нем говорится: «Microsoft Windows [6.1.7601]», на самом деле он не говорит о Windows 7 32bit или Windows 8 64bit или что-то, что командный файл может легко прочитать. – 09stephenb

+0

см. Правки. введите systeminfo.вы можете фильтровать любые результаты, которые вы хотите, добавив дополнительные параметры/C: «Имя атрибута» в findstr – 75inchpianist

+0

Спасибо, что работает сейчас. – 09stephenb

2

Используйте ver команду, затем процеживают с помощью «|»

Пример

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

WMIC лучше по сравнению с методом Ver, поскольку он включает требование архитектуры.

wmic os get caption, OSArchitecture, version 

Результат

Caption      OSArchitecture Version 
Microsoft Windows 7 Ultimate 64-bit   6.1.7600 

EDIT: Я вижу 75inch обновил свою команду Systeminfo в то время как я отправлял мой. В любом случае это сработает.

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

Detect Версия для 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 

Detect для 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

Смежные вопросы