¿Cómo determino si mi sistema es Windows 10 usando la línea de comando? [duplicar]

32

Esta pregunta ya tiene una respuesta aquí:

Estoy trabajando con InstallAnywhere, un antiguo programa para crear instaladores. Me gustaría instalar un archivo en particular, solo en el caso de Windows XP y Windows Vista.

Debido a las limitaciones de InstallAnywhere, esto no es posible. Solo puedo decidir eliminar el archivo una vez que ya se ha instalado, según una regla.

Dentro de esa regla, puedo verificar la plataforma en la que me estoy ejecutando, lo que me da la posibilidad de verificar Windows XP, Windows Vista, Windows 7, etc., pero no Windows 10. No puedo decir "Realice esto acción cuando el sistema no es XP o Vista ", así que necesito decir" Realice esta acción en todas esas plataformas, que no son XP o Vista ".

Sin embargo, puedo iniciar comandos de línea de comandos y obtener el resultado, así que esta es mi pregunta: ¿hay algún comando que pueda usar para determinar si estoy trabajando en un sistema Windows 10?

Dominique
fuente
winveraparecerá el cuadro de diálogo Acerca de Windows si se escribe en cmd o Inicio. Funcionaría eso? Alternativamente: stackoverflow.com/questions/1792740/…
Tetsujin
Gracias por la respuesta, pero estoy buscando un comando de línea de comando que dé una respuesta en la línea de comando, no puedo usar la información en forma de lote cuando aparece un cuadro de mensaje.
Dominique
Verifique la versión cmd.exe, es la más fácil y compatible al menos desde XP. Hay una pregunta al respecto.
KeyWeeUsr
2
versiones de cmd de google, cada sistema operativo tiene un número de versión diferente, puede verificarlo y no necesita ningún script largo innecesario u otro programa - aquí
KeyWeeUsr
55
Solo escribe ver. Por ejemplo, en mi sistema Windows 7 aparece "Microsoft Windows [Versión 6.1.7601]" que me dice que estoy ejecutando Windows 7 (que tiene la versión número 6.1 ).
Andreas Rejbrand

Respuestas:

54

¿Hay un comando para determinar si estoy trabajando en un sistema Windows 10?

Puedes usar wmic.

El siguiente comando devolverá la versión de Windows.

wmic os get Caption | findstr /v Caption

Salida de ejemplo:

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

Si desea un poco más de información, puede usar el siguiente archivo por lotes (GetOS.cmd), que recuperará y mostrará:

  • Versión del sistema operativo
  • Service Pack versión principal
  • Arquitectura (64 o 32 bits)
@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

La versión del sistema operativo se almacena en %_os, la versión principal del Service Pack se almacena en %_sp%, y la arquitectura se almacena en %_bits%.

Notas:

  • No se ha probado por completo, ya que no tengo todas las combinaciones de SO y Service Pack para probarlo.

  • El forcomando recupera solo la tercera parte (token) del sistema operativo. Esto funcionará para las versiones de escritorio (si desea distinguir Server 2008 de otras versiones, necesitará encontrar otra solución).

  • %_osse establece en uno de los siguientes valores: Server, Vista, 7, 8, 8.1o 10.

Salida de ejemplo:

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

F:\test>

Otras lecturas

DavidPostill
fuente
2
Después de algunas pruebas, he decidido usar el siguiente comando:wmic os get Caption | findstr /V Caption
Dominique
@DavidPostill He probado el archivo por lotes. Creo que necesita un pauseantes endlocalde dar al usuario la oportunidad de leer la salida antes de que se cierre la ventana. ¿Eso te sigue a ti también?
Mateo
1
@Matthew Creo que la expectativa es que algún otro sistema estaría ejecutando el archivo por lotes y capturando su salida (o se llamaría manualmente desde una ventana de símbolo del sistema existente).
TripeHound
La pausa de @mathew no es necesaria desde el indicador de cmd. La respuesta es mostrar la técnica en lugar de adaptarse a todos los escenarios.
DavidPostill
1
@mathew abre un indicador de cmd donde guardaste el archivo y escribe getos
DavidPostill
35

No puedo creer tanto tiempo y no tengo ningún comando

C:\>ver

Microsoft Windows [Version 10.0.10586]

C:\>

Funciona en redirecciones para que puedas hacer

ver | find "Version 10."

Pero normalmente debe escribir "para esta y todas las versiones futuras", por lo que es mejor que enumere las anteriores.

Joshua
fuente
Para su información verno no trabajar en PowerShell. Es CMDespecífico.
Keltari
3
@Keltari ¡Pero iex "ver"sí!
Ben N
La salida de verpuede ser un poco engañosa. En la máquina en la que estoy sentado ahora mismo vuelve Microsoft Windows [Version 6.1.7601]. Pero estoy bastante seguro de que ejecuta Windows 7, no Windows 6.
Philipp
@Philipp Sí, Windows 7 y 8 son versiones de parches "realmente" de Vista, 6.1 y 6.2 respectivamente; La versión principal es estrictamente marketing. No sé si los cambios en Windows 10 son lo suficientemente significativos como para garantizar un aumento importante de la versión. (Desde la perspectiva de la ingeniería de software de línea dura, la versión principal de cualquier software solo se debe descartar para indicar una ruptura de compatibilidad con versiones anteriores; se deduce que las versiones principales grandes son malas . Desafortunadamente, al departamento de marketing le gustan los números grandes.)
zwol
1
@Philipp: es fácil encontrar un mapa desde el número de versión hasta los nombres de marketing, por ejemplo, aquí
davidbak
18

información del sistema

obtiene muchas informaciones útiles como sistema operativo, tipo de sistema (32/64 bit) y durante tanto tiempo:

ingrese la descripción de la imagen aquí

tipo
fuente
Sí, lo recomendaría systeminfotambién. Como puede ver en la imagen de arriba, mostrará su sistema operativo, así como otra información que pueda necesitar.
Mateo
3
Gracias por la rápida respuesta. systeminfode hecho, da la información que estoy buscando (de ahí el voto positivo), pero lleva bastante tiempo (en mi PC toma más de 15 segundos). Por lo tanto, he optado por la wmicsolución, que se encuentra en la siguiente respuesta.
Dominique
1
Esto es lo que pido a la gente a correr cuando necesito averiguar OS / versión que se están ejecutando en:cmd /c systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
Andrew Savinyj
1
La salida de systeminfo depende del idioma, por lo que es bastante inútil si desea ejecutarlo a mayor escala
Stephan
1

No tengo ninguna experiencia con InstallAnywhere, pero hay dos opciones para ver qué sistema operativo se instala utilizando una línea de comandos.

  1. Usando Cmd

    systeminfo.exe
    

    Usando el comando systeminfo.exe, puede ver el resultado debajo del campo OS Name. Esto puede darle más información de la que necesita.

    Se puede encontrar más información sobre este comando en Microsoft TechNet .

  2. Potencia Shell

    Alternativamente, puede usar el siguiente script de Powershell que le devolverá la información exacta que desea.

    Get-CimInstance Win32_OperatingSystem | Select-Object  Caption | ForEach{ $_.Caption }
    
Tim Mahood
fuente