Win下批处理获取系统版本号

方式1:

@echo off
cls

ver | find "4.0." > NUL &&  goto win95  
ver | find "4.10." > NUL &&  goto win98 
ver | find "4.90." > NUL &&  goto win_me 
ver | find "3.51." > NUL &&  goto win_Nt_3_5 
ver | find "5.0." > NUL &&  goto win2000  
ver | find "5.1." > NUL &&  goto win_xp  
ver | find "5.2." > NUL &&  goto win2003  
ver | find "6.0." > NUL &&  goto vista 
ver | find "6.1." > NUL &&  goto win7  
ver | find "6.2." > NUL &&  goto win8  
ver | find "6.3." > NUL &&  goto win8.1  
ver | find "10." > NUL &&  goto win10

:win95
@echo           当前系统是:win95
@echo ----------------------------------------
goto end

:win98
@echo           当前系统是:win98
@echo ----------------------------------------
goto end

:win_me
@echo           当前系统是:win_me
@echo ----------------------------------------
goto end

:win_Nt_3_5
@echo           当前系统是:win NT 3.51
@echo ----------------------------------------
goto end

:win2000
@echo           当前系统是:win2000
@echo ----------------------------------------
goto end

:win_xp
@echo           当前系统是:WinXP
@echo ----------------------------------------
goto end

:win2003
@echo           当前系统是:win200
@echo ----------------------------------------
goto end

:vista
@echo           当前系统是:vista
@echo ----------------------------------------
goto end


:win7
@echo           当前系统是:win7
@echo ----------------------------------------
goto end

:win8
@echo           当前系统是:win8
@echo ----------------------------------------
goto end

:win8.1
@echo           当前系统是:win8.1
@echo ----------------------------------------
goto end

:win10
@echo           当前系统是:win10
@echo ----------------------------------------
goto end

@echo           不能获取当前操作系统版本
@echo ----------------------------------------

:end
pause

方式2:

@echo off
::从系统文件中获取系统版本信息
::delims=;表示以分号作为分隔符,对remain字符串进行分割处理。
::tokens=1*,tokens表示分段的方式,tokens=1*表示第一个分隔符;之前的作为一部分,剩下的(*表示)作为一部分。这两部分在循环体总可以::用%%a表示第一部分,%%b表示第二部分。
for /f "tokens=1* delims=[" %%a in ('ver') do set b=%%b
::将版本信息赋值给变量b
::set b=%b:* =%
set b=%b:* =%
::调用指定值对应的cmd命令行
call:%b:~0,4%%PROCESSOR_ARCHITECTURE:~-1%

echo %b%

for /f "tokens=1* delims=]" %%a in (%ver%) do set b=%%a
set b=%b:* =%
echo ver=%b%
 
@echo off
for /f "tokens=2 delims==" %%a in ('wmic path win32_operatingsystem get LocalDateTime /value') do (  
    set t=%%a
)  
set nowTime=%t:~0,12%
echo,%nowTime%  
 
pause&exit
:5.1.6
echo 系统版本: winxp_32位
goto:eof
:5.2.6
echo 系统版本: win2003_32位
goto:eof
:5.2.4
echo 系统版本: win2003_64位
goto:eof
:6.1.6
echo 系统版本:win7_32位
goto:eof
:6.1.4
echo 系统版本:win7_64或win2008_64位
goto:eof
:6.2.6
echo 系统版本:win8_32位
goto:eof
:6.2.4
echo 系统版本:win8_64或win2012_64位
goto:eof
 
pause

获取版本号(数字)

@echo off
ver
::从系统文件中获取系统版本信息
::delims=;表示以分号作为分隔符,对remain字符串进行分割处理。
::tokens=1*,tokens表示分段的方式,tokens=1*表示第一个分隔符;之前的作为一部分,剩下的(*表示)作为一部分。这两部分在循环体总可以:::用%%a表示第一部分,%%b表示第二部分。
::在.bat文件中会将%%视为命令行窗口中的%,因此,for循环的参数例如%i,在.bat文件中应写成%%i
echo "-----------------------------方式1----------------------------"
for /f "tokens=1* delims=[" %%a in ('ver') do (
	set b=%%b
	set a=%%a
	REM echo %%a
	REM echo %%b
)
::将版本信息赋值给变量b
::set b=%b:* =%
::另一种解决方案是删除带有替换的逗号:
set bv=%b:* =%
echo %bv%
for /f "tokens=1* delims=]" %%a in ("%bv%") do (
	REM set b=%%b
	set a=%%a
	echo %%a
	REM echo %%b
)

set vv=%a%

for /f "tokens=1* delims=." %%a in ("%vv%") do (
	set big=%%a
	echo %%a
	set b=%%b
	echo %%b
)

for /f "tokens=2* delims=." %%a in ("%vv%") do (
	set small=%%a
	echo %%a
	set b=%%b
	echo %%b
)

REM set /a win_ver=(%big%.%small%)+0
set /a win_ver="6"+0.0
echo %win_ver%
echo "--------------------方式2---------------------------"
::https://www.jb51.net/article/17928.htm 批处理 FOR参数/F之tokens详解
::https://blog.csdn.net/weixin_33696106/article/details/92956216 批处理:FOR的参数/F之delims详解

::英文
chcp 437
::中文
chcp 936 
ver
for /f "tokens=1-10 delims=.[ " %%a in ('ver') do (
	set small=%%a
	echo %%a
	set b=%%b
	echo %%b
	echo %%c
	set big1=%%d
	set small1=%%e
	echo %%f
)
echo %big1%.%small1%

pause

猜你喜欢

转载自blog.csdn.net/yuanlin1318/article/details/121373664