首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

[拾掇修改] DOS 批处理命令判断操作系统版本 执行各版本对应语句

2012-09-19 
[整理修改] DOS 批处理命令判断操作系统版本 执行各版本对应语句昨天在家里试用netsh interface ip set ad

[整理修改] DOS 批处理命令判断操作系统版本 执行各版本对应语句
昨天在家里试用  netsh interface ip set address 这些命令更改上网IP、DNS、网关等,今天将那些代码拿来办公室一用发现尽报错,才想起来家里电脑是WIn7系统,办公室机器是XP系统,于是手工修改了一下 netsh 对应的一些参数,在XP下面终于能正常执行了。也就是说,在WIn7和WinXP下  netsh 命令对应的参数是不一样的,就比如 在XP下面的netsh interface ip add dns 到了WIN7下,就必须得写为:netsh interface ip add dnsservers ,这就带来一个大问题,本来用批处理修改网卡IP等数据就是图方便,现在难不成要针对不同的系统单独制作一个BAT文件?那样的话我自己都会觉得自己太2了,于是想到用批处理应该可以判断操作系统版本,而针对版本执行对应版本的语句。我自己没搞过,当然只能在网上搜索了,找了好多网站,发现了一共3种类似的方法,于是稍加修改整理,发出来给大家测试看看,希望测试过的朋友提供自己操作系统版本及名称【用Ver显示的】,以便补充数据更完整的判断。代码见下:

:home@echo offcls@echo  ================= 判断Windows版本 ============================rem 选择测试三种方法@echo [1]测试方法一@echo [2]测试方法二@echo [3]测试方法三@echo [Q]结束测试@echo ============================================================set /p testa=选择测试方法(记得回车):if /i %testa%==1 goto test0if /i %testa%==2 goto test1if /i %testa%==3 goto test2if /i %testa%==Q goto exit:test0rem ================================方法一===============================rem @echo 返回值: isXPlevel=1 XP级别;isXPlevel=2 高于XP级别;isXPlevel=0 低于XP级别rem set isXPlevel=0  set isXPlevel=1 &  ,set isXPlevel=2 &ver|findstr "5\.[0-9]\.[0-9][0-9]*" > nul && (goto show0)ver|findstr "6\.[0-9]\.[0-9][0-9]*" > nul && (goto show01)goto show02:show0@echo ---------------- 测试方法一 ------------@echo           当前系统是: XP级别@echo ----------------------------------------goto end:show01@echo ---------------- 测试方法一 ------------@echo           当前系统是:高于XP级别@echo ----------------------------------------goto end:show02@echo ---------------- 测试方法一 ------------@echo           当前系统是:低于XP级别@echo ----------------------------------------goto endrem ================================方法一结束===============================:test1rem ================================方法二===============================ver | find "5.0." > NUL &&  goto show50ver | find "5.1." > NUL &&  goto show51ver | find "5.2." > NUL &&  goto show52ver | find "6.0." > NUL &&  goto show60ver | find "6.1." > NUL &&  goto show61:show50@echo ---------------- 测试方法二 ------------@echo 当前系统是:[ set XT=Windows2000  ]@echo ----------------------------------------goto end:show51@echo ---------------- 测试方法二 ------------@echo 当前系统是:[ set XT=WindowsXP ]@echo ----------------------------------------goto end:show52@echo ---------------- 测试方法二 ------------@echo 当前系统是:[ set XT=Windows2003 ]@echo ----------------------------------------goto end:show60@echo ---------------- 测试方法二 ------------@echo 当前系统是:[ set XT=WindowsVista ]@echo ----------------------------------------goto end:show61@echo ---------------- 测试方法二 ------------@echo 当前系统是:[ set XT=Windows7 ]@echo ----------------------------------------goto endrem ================================方法二结束===============================:test2rem ================================方法三结束===============================ver | find /i "6.1." > NULif %errorlevel% equ 0 (goto win7)ver | find /i "5.1."  > NULif %errorlevel% equ 0 (goto winXP):NoneTest@echo ---------------- 测试方法三 ------------@echo 当前系统暂无识别数据,请直接查看系统版本:ver @echo ----------------------------------------goto end:win7@echo ---------------- 测试方法三 ------------@echo 当前系统是:Win7!!!@echo ----------------------------------------goto end:winXP@echo ---------------- 测试方法三 ------------@echo 当前系统是:winXP!!!@echo ----------------------------------------goto endrem ================================方法三结束===============================:endpausegoto Home:exit


 

1楼jessezappy4天前 13:45
当然,除了直接判断版本号,还可以判断系统名称,比如查找“xp” 这样字样也行。
Re: jessezappy4天前 13:47
回复jessezappyn例如: ver | find " Windows XP " > NUL && goto show51 这句

热点排行