Ответ 1
Я решил эту проблему, разобрав вывод:
reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion" /v "ProductName"
Мне нужен способ узнать, какую версию окон я запускаю, используя простые инструменты командной строки (без powershell). Мне нужно, чтобы он работал от не-привилегированного пользователя, и мне нужно разобрать разницу между Windows XP, Vista, сервером 2008 и 7. В настоящее время я использую:
wmic os get Caption
, но это не удается, если у пользователя нет разрешений для запуска wmic.
Update: Чтобы уточнить, мне нужна эта команда, чтобы не разорваться на разные уровни пакета обновления и т.д., Что, вероятно, исключает разбор определенного номера версии. Кроме того, если вы посмотрите этот список версий Windows, вы увидите, что номера, указанные в Windows 7 и сервере 2008 r2, совпадают.
Я решил эту проблему, разобрав вывод:
reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion" /v "ProductName"
systeminfo показывает все о версии os, включая номер пакета обновления и версию, которую вы используете.
C:\>systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
OS Name: Microsoft Windows 7 Enterprise
OS Version: 6.1.7601 Service Pack 1 Build 7601
Вы можете использовать ver
. Я нахожусь на школьном компьютере с непривилегированной командной строкой, и он дает мне Microsft Windows [Version 6.1.7601]
. Я уверен, что вы сможете отсортировать Vista и XP по номеру, который вы получили.
cmd
отображает версию Windows при запуске:
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Users\Joey>_
Это также аналогичная линия, которую выпивает ver
.
Один вариант может быть
echo exit|cmd|findstr Windows
другое
cmd /c ver
в зависимости от того, есть ли у вас конвейер или нет.
if not CMDEXTVERSION 2 (
echo Error: This batch requires Command Extensions version 2 or higher
exit /b 1
)
FOR /F "usebackq tokens=4 delims=] " %%I IN (`ver`) DO for /F "tokens=1,2 delims=." %%J IN ("%%I") do set WindowsVersion=%%J.%%K
if "%WindowsVersion%" LSS "6.1" (
echo Error: This batch requires Windows 7 SP1 or higher
exit /b 1
)
Вы можете получить SysInternals и установить в свой каталог C: \. После этого вы можете перейти в командную строку и использовать команду PSINFO.
Это здорово, потому что он позволяет мне запрашивать любой компьютер в сети (к которому у меня есть доступ). В командной строке введите: PSINFO\точное имя компьютера
(PSINFO whack whack точное имя компьютера)
Затем нажмите enter. Потребуется минут или два, чтобы отчитываться, в зависимости от того, где находится этот компьютер.