2015-12-16 16 views

cevap

11
setlocal 
for /f "tokens=4-5 delims=. " %%i in ('ver') do set VERSION=%%i.%%j 
if "%version%" == "6.3" echo Windows 8.1 
if "%version%" == "6.2" echo Windows 8. 
if "%version%" == "6.1" echo Windows 7. 
if "%version%" == "6.0" echo Windows Vista. 
if "%version%" == "10.0" echo Windows 10. 
echo %version% 
rem etc etc 
endlocal 
+0

Teşekkür ederiz. Bu tam olarak ihtiyacım olan şey –

+0

Bu yöntem Windows XP için çalışmıyor çünkü 'ver' 'Microsoft Windows XP [Sürüm 5.1.2600]' çıktılar ve bu nedenle '[Sürüm.5 '' VERSION değişkenine atanır. Ancak, işletim sisteminin [Martin Rezyne] (http://stackoverflow.com/users/2357522/martin-rezyne) tarafından istenildiği gibi Windows 10 olup olmadığını kontrol etmek için çalışır. – Mofi

+1

@Mofi -% VERSION% değerinin "10.0" değeri olmayacağı ve bu nedenle Windows 10'u çalıştırıp çalıştırmadığınızı kontrol etmek için kullanabileceğinizden, gerçek sürümü almanıza yardımcı olmayacaktır, ancak bu soru ne soruyor. – SomethingDark

4

Eğer biraz daha detaylı istiyorsanız:

for /f "tokens=2 delims=," %%i in ('wmic os get caption^,version /format:csv') do set os=%%i 
echo Hello, I am %os% 

ya da sadece gereksinimlerini karşılamak için:

for /f "tokens=2 delims=," %%i in ('wmic os get caption^,version /format:csv') do set os=%%i 
echo %os%|find " 10 ">nul &&echo Hello I'm Windows 10||echo I am another os 

(,version olmasını sağlar , istediğiniz str ing, bu çirkin wmic satırını içeren son belirteci değil)

+0

Bu yöntem, artık Microsoft tarafından desteklenmeyen Windows XP Professional için bile çalışır. Ancak, "ver" komutunun çıktısını "wmic" olarak her zaman bitirmek için 1 saniyeden daha uzun bir süre kullanmakla kıyaslandığında yavaştır. – Mofi

İlgili konular