|
wjcing
初级用户
积分 71
发帖 59
注册 2007-12-27
状态 离线
|
『楼 主』:
[已结]如何统计某一段的数据?
我有一段数据,可以是用空格或逗号分隔,如:
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 ]
|
|
2008-11-24 10:40 |
|
|
moniuming
银牌会员
永远的菜鸟
积分 1335
发帖 574
注册 2007-11-27 来自 广西
状态 离线
|
『第
2 楼』:
@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 ]
|
|
2008-11-24 12:59 |
|
|
tireless
银牌会员
积分 2025
发帖 1122
注册 2007-9-5
状态 离线
|
『第
3 楼』:
@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
|
|
2008-11-24 13:51 |
|
|
terse
银牌会员
积分 2404
发帖 946
注册 2005-9-8
状态 离线
|
『第
4 楼』:
@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
|
简单!简单!再简单! |
|
2008-11-24 14:04 |
|
|
wjcing
初级用户
积分 71
发帖 59
注册 2007-12-27
状态 离线
|
『第
5 楼』:
谢谢三位高手了.原来是先定义变量..之后用defined判断变量存不存在....
又学了一招..谢谢各位了...哈哈...
|
|
2008-11-24 15:13 |
|
|
tireless
银牌会员
积分 2025
发帖 1122
注册 2007-9-5
状态 离线
|
『第
6 楼』:
建议用4楼的代码。3楼和2楼把要统计和不要统计的数字都设置到了变量,很浪费虚拟内存的说。记得有一次我反复运行了很多命令,设置了很多变量,后来感觉系统变慢了,再后来出现“虚拟内存不足”的提示...
|
|
2008-11-24 15:22 |
|
|
wjcing
初级用户
积分 71
发帖 59
注册 2007-12-27
状态 离线
|
『第
7 楼』:
好的..谢谢tireless的建议..
|
|
2008-11-24 15:24 |
|
|