Board logo

标题: [已结]如何统计某一段的数据? [打印本页]

作者: wjcing     时间: 2008-11-24 10:40    标题: [已结]如何统计某一段的数据?

我有一段数据,可以是用空格或逗号分隔,如:
88,59,60,89,88,99,100,88,59,87,56,84,67,78,90,88,80,99,81,80,83,85
我想把某一段数据的个数找出来,如我想把80-89段统计出来如下:
80:2 81:1 82:0 83:1 84:1 85:1 86:0 87:1 88:4 89:1
我对批处理还不是很熟,试了很久了.请问把它们统计出来?
谢谢先了.

[ Last edited by HAT on 2008-11-24 at 16:13 ]
作者: moniuming     时间: 2008-11-24 12:59

@echo off&Setlocal Enabledelayedexpansion
set "str=88,59,60,89,88,99,100,88,59,87,56,84,67,78,90,88,80,99,81,80,83,85"
set "str=%str:,= %"
for %%a in (%str%) do (set /a _%%a+=1)
for /l %%a in (80 1 89) do (
  if not defined %%a (
    set %%a=god
    if "!_%%a!"=="" set _%%a=0
    set /p=%%a:!_%%a! <nul
  )
)
echo.&pause
[ Last edited by moniuming on 2008-11-24 at 13:15 ]
作者: tireless     时间: 2008-11-24 13:51

@echo off
set str=88,59,60,89,88,99,100,88,59,87,56,84,67,78,90,88,80,99,81,80,83,85
for %%a in (%str%) do set /a #%%a+=1
for /l %%a in (80,1,89) do (
  if not defined #%%a set #%%a=0
  call set /p=%%a:%%#%%a%% <nul
)
echo.&pause

作者: terse     时间: 2008-11-24 14:04

@echo off&Setlocal Enabledelayedexpansion
set "str=88,59,60,89,88,99,100,88,59,87,56,84,67,78,90,88,80,99,81,80,83,85"
   for %%a in (%str%) do if %%a leq 89 if %%a geq 80 set /a _%%a+=1
     for /l %%a in (80 1 89) do if defined _%%a (set /p=%%a:!_%%a! <nul)else set /p=%%a:0 <nul
echo.&pause

作者: wjcing     时间: 2008-11-24 15:13
谢谢三位高手了.原来是先定义变量..之后用defined判断变量存不存在....

又学了一招..谢谢各位了...哈哈...
作者: tireless     时间: 2008-11-24 15:22
建议用4楼的代码。3楼和2楼把要统计和不要统计的数字都设置到了变量,很浪费虚拟内存的说。记得有一次我反复运行了很多命令,设置了很多变量,后来感觉系统变慢了,再后来出现“虚拟内存不足”的提示...
作者: wjcing     时间: 2008-11-24 15:24
好的..谢谢tireless的建议..