标题: [已结]如何统计某一段的数据?
[打印本页]
作者: 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的建议..