方法:利用sort排序,一个小vbs来对多个小数求和。
不足之处:
①对不带小数点的数排行可能出现错误,如果在脚本中处理数据会显得麻烦,所以请楼主在整数后加上小数点。(我观察列表中的整数并不多)
②由于cmd不能计算小数,所以在计算综合分数时无奈用上了VBS,这造成第三项工作效率低,并且生成临时文件。
请将被处理文本命名为 武将信息.txt ,以下是测试过的脚本:- @echo off&setlocal enabledelayedexpansion
- ::code by wankoilz from bbs.bathome.net 2010/7/24
- (
- echo Set objArgs = WScript.Arguments
- echo For i = 0 to objArgs.Count - 1
- echo x=x+cDbl^(objArgs^(i^)^)
- echo Next
- echo wscript.echo x
- )>a.vbs
- :main
- cls
- set 武力=2&set 智力=3&set 体力=4&set 统御=5&set 潜力总分=6
- echo 1-------获取武将数据
- echo 2-------武将能力排行
- echo 3-------武将综合能力排行
- echo 4-------退出
- set/p p=选择:
- goto :%p%
- :1
- setlocal
- cls
- echo 单个武将信息查询
- echo.
- set/p name=请输入武将姓名:
- echo 姓名 武力 智力 体力 统御 潜力总分
- findstr /r /c:"\<%name%\>" 武将信息.txt 2>nul||echo 列表中没有你要查询的武将信息。
- pause>nul
- endlocal&goto :main
- :2
- setlocal
- cls
- set/p 能力=请输入要进行排行的能力:
- cls
- echo %能力%排行:
- echo 姓名 武力 智力 体力 统御 潜力总分
- set x=!%能力%!
- for /f "skip=1 tokens=1-6" %%1 in (武将信息.txt) do set "_%%%x% !random!!random!!random!!random!=%%1 %%2 %%3 %%4 %%5 %%6"
- for /f "tokens=2 delims==" %%i in ('set _^|sort') do echo %%i
- pause>nul
- endlocal&goto :main
- :3
- setlocal
- cls
- :loop
- set/a n+=1
- set/p 能力%n%=请输入要综合的第%n%项能力[直接回车结束]:
- if "!能力%n%!"=="" goto :next
- goto :loop
- :next
- echo 处理中...
- set/a n-=1
- for /l %%i in (1,1,%n%) do call set str=!str!%%!能力%%i!%%,
- for /f "skip=1 tokens=1,%str:~0,-1%" %%1 in (武将信息.txt) do (
- set "args=%%2 %%3 %%4 %%5 %%6"
- set/a x=^(5-!n!^)*3
- set/a t=1/x 2>nul&&for %%i in (!x!) do set "args=!args:~0,-%%i!"
- for /f %%i in ('cscript /nologo a.vbs !args!') do set "_%%i !random!!random!!random!!random!=%%1 %%i"
- )
- cls
- for /l %%i in (1,1,%n%) do set s=!s!!能力%%i!+
- echo !s:~0,-1! %n%项综合能力排行:
- echo.
- echo 姓名 综合能力分数
- for /f "tokens=2 delims==" %%i in ('set _^|sort') do echo %%i
- pause>nul
- endlocal&goto :main
- :4
- del a.vbs
- exit
复制代码
[ 本帖最后由 wankoilz 于 2010-7-25 14:04 编辑 ] |