[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] 批处理积分计算器(交流)

本帖最后由 zzpsongs 于 2013-1-1 14:43 编辑

我用所学的批处理知识做的一个实践,这里应该算是交流版块吧,咱交流一下,最好说一下有什么想法咯,比如说有什么缺陷?是否有冗余?有什么更好的技巧之类的……

就一个批处理文件,win7下能实现:
1.手动增删积分;
2.自动生成少量说明文件,并可另外修改;
3.若记录文件的日期跟当前日期不吻合,则积分减去一定值;
4.根据积分数值,匹配对应等级描述;
5.变量说明

a------------最终为要记录的积分值,
rec----------读取的积分值,
input和tip--积分变化值(稍微不同),
level--------等级描述,
edday------记录文件的修改时间
daydel-----每天要减去的积分值

代码如下:
  1. @echo off
  2. title 积分记录器
  3. color b4
  4. mode con cols=44 lines=12
  5. set tip=
  6. set daydel=10
  7. if not exist 积分记录.rec >积分记录.rec echo 0
  8. if not exist 等级描述.txt call :dis
  9. if not exist 积分说明.txt call :cry
  10. :on
  11. set a=0
  12. cls
  13. set/p rec=<积分记录.rec
  14. call :diffdaycheck 积分记录.rec
  15. if "%rec%"=="" set rec=0
  16. if %rec% leq -200 set level=无可救药&&goto jump
  17. if %rec% geq 9999 set level=宇宙一人&&goto jump
  18. for /f "tokens=1,2,3 delims=;" %%i in ('findstr .* 等级描述.txt') do (
  19. if %rec% geq %%j if %rec% leq %%k set level=%%i)
  20. :jump
  21. echo 当前积分:%rec% %tip%
  22. echo.
  23. echo.积分级别:%level%
  24. echo.
  25. echo 默认增加,负数须添加负号
  26. echo rest---重置积分
  27. echo rule---查看规则
  28. echo locl---打开目录
  29. echo exit---退出
  30. echo.
  31. set/p input=变化值^>
  32. if "%input%"=="" goto on
  33. if "%input:~0,1%"=="-" set/a a=%rec%%input%&&set tip=[%input%]&&goto end
  34. if "%input%"=="rest" set a=0&&set "tip="&&goto end
  35. if "%input%"=="exit" goto shut
  36. if "%input%"=="rule" cls&&type 积分说明.txt&&pause>nul&&goto on
  37. if "%input%"=="locl" explorer %~dp0&&goto on
  38. set/a a=%rec%+%input%
  39. set tip=[+%input%]
  40. :end
  41. >积分记录.rec echo %a%
  42. set "input="
  43. goto on
  44. :diffdaycheck
  45. set edday=%~t1
  46. if "%edday:~0,10%" neq "%date:~0,10%" set/a rec-=%daydel%
  47. goto :eof
  48. :dis
  49. >等级描述.txt (
  50. echo 无可救药;-9999;-200
  51. echo 奇懒无比;-199;-59
  52. echo 行动勉强;-58;59
  53. echo 刚果决绝;60;99
  54. echo 初臻佳境;100;249
  55. echo 步趋所指;250;499
  56. echo 毅力惊人;500;776
  57. echo 霸气酿成;777;999
  58. echo 藐视天下;1000;1199
  59. echo 仙法初成;1200;1499
  60. echo 金仙修习;1500;1699
  61. echo 德誉专加;1700;1799
  62. echo 精神统一;1800;1999
  63. echo 招风布雨;2000;2399
  64. echo 涅槃凤凰;2400;2729
  65. echo 开坛论道;2730;2999
  66. echo 天地重开;3000;4999
  67. echo 天地随毁;5000;9999
  68. )
  69. goto :eof
  70. :cry
  71. >积分说明.txt (
  72. echo ^<--若记录文件跟当前系统日期不一致
  73. echo ^<--积分将自动减10
  74. echo 主线1~10
  75. echo 支线1~5
  76. echo 世界观2~10
  77. echo 负面情绪-1~-10
  78. )
  79. goto :eof
  80. :shut
复制代码
共同进步~~

行18、19需缩进,详见2楼http://www.bathome.net/redirect. ... 4&fromuid=46088

回复 2# BAT-VBS


    谢谢,这一点在代码阅读上很重要。

TOP

建议缩进
  1. for /f "tokens=1,2,3 delims=;" %%i in ('findstr .* 等级描述.txt') do (
  2.     if %rec% geq %%j (
  3.         if %rec% leq %%k (
  4.             set level=%%i
  5.         )
  6.     )
  7. )
复制代码

TOP

返回列表