1,9.0.0.4507 和11.0.5721.5268 是非法数字,所以if执行字符比较
2,楼主是要只比较第一个点前面的数字,还是要逐个比较?
只比较第一对:- @echo off
- set a=11.0.5721.5268
- set b=9.0.0.4507
- for /F "delims=. " %%a in ("%a%") do for /F "delims=. " %%b in ("%b%") do if %%a gtr %%b echo.大于
- pause
复制代码 版本号为4段4位数字,则:- @echo off&setlocal enabledelayedexpansion
- set a=11.0.5721.5268
- set b=9.0.0.4507
- for /F " tokens=1-4 delims=. " %%a in ("%a%") do for /F " tokens=1-4 delims=. " %%e in ("%b%") do (
- set a=000%%a
- set b=000%%b
- set c=000%%c
- set d=000%%d
- set e=000%%e
- set f=000%%f
- set g=000%%g
- set h=000%%h
- if "!a:~-4!!b:~-4!!c:~-4!!d:~-4!" gtr "!e:~-4!!f:~-4!!g:~-4!!h:~-4!" echo.大于
- )
- pause
复制代码 逐个进行比较:- @echo off
- set a=11.0.5721.5268
- set b=9.0.0.4507
- for /F " tokens=1-4 delims=. " %%a in ("%a%") do for /F " tokens=1-4 delims=. " %%e in ("%b%") do (
- if %%a gtr %%e call:y
- if %%a==%%e if %%b gtr %%f call:y
- if %%a==%%e if %%b==%%f if %%c gtr %%g call:y
- if %%a==%%e if %%b==%%f if %%c==%%g if %%d gtr %%h call:y
- )
- pause&exit
- :y
- echo.大于
复制代码
或:- @echo off
- set a=11.0.5721.5268
- set b=9.0.0.4507
- for /F " tokens=1-4 delims=. " %%a in ("%a%") do for /F " tokens=1-4 delims=. " %%e in ("%b%") do (
- if %%a leq %%e goto:eof
- if %%a==%%e if %%b leq %%f goto:eof
- if %%a==%%e if %%b==%%f if %%c leq %%g goto:eof
- if %%a==%%e if %%b==%%f if %%c==%%g if %%d leq %%h goto:eof
- )
- echo.大于
- pause
复制代码
[ 本帖最后由 hanyeguxing 于 2010-5-26 17:46 编辑 ] |