方式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/article/17928.htm 批处理 FOR参数/F之tokens详解
::https://blog.csdn/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
更多推荐
Win下批处理获取系统版本号
发布评论