Come faccio a determinare se il mio sistema è Windows 10 utilizzando la riga di comando? [duplicare]


32

Sto lavorando con InstallAnywhere, un vecchio programma per la creazione di programmi di installazione. Vorrei installare un determinato file, solo in caso di Windows XP e Windows Vista.

A causa delle limitazioni di InstallAnywhere, questo non è possibile. Posso solo decidere di eliminare il file una volta che è già stato installato, in base a una regola.

All'interno di quella regola, posso controllare la piattaforma su cui sto correndo, il che mi dà la possibilità di controllare per Windows XP, Windows Vista, Windows 7, ecc. Ma non per Windows 10. Non posso dire "Esegui azione quando il sistema non è XP o Vista ", quindi devo dire" Eseguire questa azione su tutte quelle piattaforme, che non sono XP o Vista ".

Tuttavia, posso avviare i comandi della riga di comando e catturare il risultato, quindi ecco la mia domanda: esiste un comando che posso usare per determinare se sto lavorando su un sistema Windows 10?


winverapparirà la finestra di dialogo Informazioni su Windows se digitata in cmd o Start. Funzionerebbe? In alternativa - stackoverflow.com/questions/1792740/…
Tetsujin,

Grazie per la risposta, ma sto cercando un comando da riga di comando che dia una risposta da riga di comando, non posso usare le informazioni in modo batch quando appare una finestra di messaggio.
Dominique,

Controlla la versione di cmd.exe, è la più semplice e supportata almeno da XP. C'è una domanda al riguardo.
KeyWeeUsr,

2
versioni cmd di google, ogni sistema operativo ha un numero di versione diverso, puoi verificarlo e non hai bisogno di script lunghi non necessari o di un altro programma - qui
KeyWeeUsr

5
Basta digitare ver. Ad esempio, sul mio sistema Windows 7 ottengo "Microsoft Windows [Versione 6.1.7601]" che mi dice che sto eseguendo Windows 7 (che ha la versione numero 6.1 ).
Andreas Rejbrand,

Risposte:


54

Esiste un comando per determinare se sto lavorando su un sistema Windows 10?

È possibile utilizzare wmic.

Il seguente comando restituirà la versione di Windows.

wmic os get Caption | findstr /v Caption

Esempio di output:

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

Se desideri ulteriori informazioni, puoi utilizzare il seguente file batch (GetOS.cmd), che recupererà e visualizzerà:

  • Versione del sistema operativo
  • Service Pack Versione principale
  • Architettura (64 o 32 bit)
@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 versione del sistema operativo è archiviata %_os, la versione principale del Service Pack è archiviata %_sp%e l'architettura è archiviata %_bits%.

Gli appunti:

  • Non completamente testato in quanto non ho tutte le combinazioni di SO e Service Pack con cui testarlo.

  • Il forcomando recupera solo la terza parte (token) del sistema operativo. Funzionerà con le versioni desktop (se vuoi distinguere Server 2008 dalle altre versioni dovrai trovare un'altra soluzione).

  • %_ossarà impostato uno dei seguenti valori: Server, Vista, 7, 8, 8.1o 10.

Esempio di output:

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

F:\test>

Ulteriori letture


2
Dopo alcuni test, ho deciso di utilizzare il seguente comando:wmic os get Caption | findstr /V Caption
Dominique,

@DavidPostill Ho testato il file batch. Penso che abbia bisogno di un pauseprima endlocalper dare all'utente la possibilità di leggere l'output prima che la finestra si chiuda. Questo segue anche per te?
Matteo,

1
@Matthew Penso che l'aspettativa sia che un altro sistema esegua il file batch e ne catturi l'output (o verrebbe chiamato manualmente da una finestra del prompt dei comandi esistente).
TripeHound,

La pausa @mathew non è necessaria in esecuzione dal prompt di cmd. La risposta è mostrare la tecnica piuttosto che adattarla a tutti gli scenari.
DavidPostill

1
@mathew apri un prompt cmd in cui hai salvato il file e digita getos
DavidPostill

35

Non posso credere a questo comando lungo e senza ver

C:\>ver

Microsoft Windows [Version 10.0.10586]

C:\>

Funziona con i reindirizzamenti, quindi puoi farlo

ver | find "Version 10."

Ma dovresti normalmente scrivere "per questa e tutte le versioni future", quindi è meglio elencare le precedenti.


FYI vernon non lavorare in PowerShell. È CMDspecifico.
Keltari,

3
@Keltari Ma lo iex "ver"fa!
Ben N,

L'output di verpuò essere un po 'fuorviante. Sulla macchina in cui sono seduto adesso ritorna Microsoft Windows [Version 6.1.7601]. Ma sono abbastanza sicuro che esegue Windows 7, non Windows 6.
Philipp

@Philipp Sì, Windows 7 e 8 sono versioni "davvero" di patch di Vista, 6.1 e 6.2 rispettivamente; il bump della versione principale è strettamente marketing. Non so se le modifiche in Windows 10 siano abbastanza significative da giustificare un bump della versione principale. (Dal punto di vista dell'ingegneria del software hardline, la versione principale di qualsiasi software dovrebbe essere mai urtata per indicare un'interruzione della compatibilità con le versioni precedenti; ne consegue che le versioni principali di grandi dimensioni sono cattive . Sfortunatamente, al reparto marketing piacciono i grandi numeri.)
zwol

1
@Philipp - è facile trovare una mappa dal numero di versione ai nomi di marketing, ad esempio qui
davidbak,

18

systeminfo

ottiene molte informazioni utili come il sistema operativo, il tipo di sistema (32/64 bit) e così a lungo:

inserisci qui la descrizione dell'immagine


Sì, lo consiglio systeminfoanche io . Come puoi vedere dall'immagine sopra, mostrerà il tuo sistema operativo e altre informazioni di cui potresti aver bisogno.
Matteo,

3
Grazie per la risposta rapida. systeminfoanzi fornisce le informazioni che sto cercando (da qui il voto positivo), ma ci vuole un po 'di tempo (sul mio PC ci vogliono più di 15 secondi). Pertanto ho optato per la wmicsoluzione, trovata nella risposta successiva.
Dominique,

1
Questo è ciò che chiedo alle persone di eseguire quando ho bisogno di scoprire os / versione su cui stanno girando:cmd /c systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
Andrew Savinykh,

1
l'output di systeminfo dipende dalla lingua, quindi abbastanza inutile se vuoi eseguirlo su una scala più ampia
Stephan,

1

Non ho alcuna esperienza con InstallAnywhere ma ci sono due opzioni per vedere quale sistema operativo è installato usando una riga di comando.

  1. Usando Cmd

    systeminfo.exe
    

    Usando il comando systeminfo.exe, puoi vedere il risultato di sotto il campo OS Name. Questo potrebbe darti più informazioni di quelle necessarie.

    Ulteriori informazioni su questo comando sono disponibili in Microsoft TechNet .

  2. PowerShell

    In alternativa, è possibile utilizzare il seguente script Powershell che restituirà le informazioni esatte desiderate.

    Get-CimInstance Win32_OperatingSystem | Select-Object  Caption | ForEach{ $_.Caption }
    
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.