中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [精彩][批处理字符出现次数统计]
« [1] [2] [3] »
作者:
标题: [精彩][批处理字符出现次数统计] 上一主题 | 下一主题
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 16 楼』:  

  各位的代码都很精彩,比起我的 sort 方案来,高明了很多,给各位加分!



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-11-30 02:49
查看资料  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 17 楼』:  

  我做的方案在这里



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-11-30 02:53
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 18 楼』:  

redtek的利用shift移位,set .的按顺序显示特性

增加出现次数最多的显示^_^
@echo off
setlocal EnableDelayedExpansion
set str=adadfdfseffserfefsefseetsdg

:loop
        set str$=%str$% %str:~0,1% && set str=%str:~1%
        if not "%str%" == "" goto loop

call :start %str$%
set .
echo 出现次数最多的:%max%=%maxN%
pause
exit

:start
        if [%1]==[] ( goto :eof ) else ( set /a  .%1+=1 )
if !.%1! GTR !maxN! set maxN=!.%1!&&set max=.%1
        shift
        goto :start
修改了BUG

[ Last edited by zxcv on 2006-11-29 at 08:27 PM ]

   此帖被 +2 点积分    点击查看详情   
评分人:【 youxi01 分数: +2  时间:2006-11-30 05:30


2006-11-30 02:58
查看资料  发短消息 网志   编辑帖子  回复  引用回复
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 19 楼』:  

namejm兄17楼的方案 “做一个文本中关于内容统计的批处理” 正在欣赏,里面的代码真是有意思,太精彩了~~:)))

回zxcv兄:我15楼代码没有做出现次数最多的那部分是因为我不会做(偷偷的说~)
真是精彩~~跟namejm、zxcv兄学习了~:)))



    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
2006-11-30 03:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 20 楼』:  

俺是现学现用
都是学习好榜样

2006-11-30 03:18
查看资料  发短消息 网志   编辑帖子  回复  引用回复
pengfei
银牌会员




积分 1218
发帖 485
注册 2006-7-21
来自 湖南.娄底
状态 离线
『第 21 楼』:  

厉害, 各位加油^_^



业精于勤而荒于嬉,形成于思而毁于随。
2006-11-30 03:33
查看资料  发送邮件  发短消息 网志  OICQ (573381312)  编辑帖子  回复  引用回复
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 22 楼』:  

if !.%1! GTR !maxN! set maxN=!.%1! && set max=.%1
if %%j GTR !l! set l=%%j & set m=%%i

namejm和zxcv兄的这句有意思~~

找出最大的一个数,如果取到的值大于 “存储最大值的变量” ,则说明取到的数更大,则让它来代替原 “存储最大值的变量” 内,
当数据全“走”过一遍以后,“存储最大值的变量” 内的值自然是最大的值~:)

欣赏加狂顶!!!
又学到很多东东,交流碰撞出很多灵感~~



    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
2006-11-30 03:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 23 楼』:  


  刚才测试了一下18楼的代码,在18楼代码的基础上,我增加了str变量的值,把它设置为:set str=adadfdfseffserfefsefseetsdgdsfjkljdsklfjdsfdsgdsafdsaf,然后运行批处理,结果:

  Quote:
.a=4
.d=10
.e=6
.f=12
.g=2
.j=3
.k=2
.l=2
.r=1
.s=11
.t=1
出现次数最多的:.f=9
请按任意键继续. . .



2006-11-30 04:13
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
无奈何
荣誉版主





积分 1338
发帖 356
注册 2005-7-15
状态 离线
『第 24 楼』:  

后面的越来越精彩了,这样的交流大家收获都不少,学习的还快,还有趣味。
建议以后大家多发现一些这样的问题,要求不要太难,重在参与。
大家讨论一下以后可不可以每期增加一些名誉性的奖项,比如:
代码最短
速度最快
稳定性最强
创意最好
还有一种谁都看不明白,但是能完成功能。

从这几个角度充分发挥大家的发散思维。不过,类似这样的名字怎么取...



  ☆开始\运行 (WIN+R)☆
%ComSpec% /cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p= %,:~%i,1%<nul&ping/n 1 127.1>nul

2006-11-30 04:31
查看资料  发送邮件  发短消息 网志  OICQ (105400208)  编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 25 楼』:  

还有一种谁都看不明白,但是能完成功能

呵呵,这个非无奈何斑竹你魔术了

2006-11-30 04:49
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 26 楼』:  

那版主的名字就是 “空前绝后” 这名字棒吧~~



    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
2006-11-30 05:08
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tao0610
高级用户

朦胧的世界


积分 579
发帖 218
注册 2006-10-24
状态 离线
『第 27 楼』:  

MS出现次数最多的结果都不太对,问题出在那里?




认识自己,降伏自己,改变自己
,才能改变别人!
2006-11-30 05:20
查看资料  发短消息 网志   编辑帖子  回复  引用回复
youxi01
高级用户




积分 846
发帖 247
注册 2006-10-27
来自 湖南==》广东
状态 离线
『第 28 楼』:  

也贴一段不成熟的代码,统计各字符出现的次数:
思路:先用“函数”test取得变量str的长度,保存为OSlen;
然后取得变量的第一个字符,保存为str0,然后将变量str中的str0全部替换为空,再获取str的长度,保存为%num%,那么第一个出现的字符为:%str0%,长度为:%OSlen%-%num%,依次类推.....
@echo off
setlocal EnableDelayedExpansion
set str=adadfdfseffserfefsefseetsdg
call :test %str%

for /l %%i in (0 1 100) do (
   set /a OSlen=!num!  
   set str%%i=!str:~0,1!
   call :test1 !str! !str%%i! %%i)

:exit
    pause>nul
    exit

:test
    set /a num=0
    set var=%1
    for /l %%i in (1 1 100) do (
       set var_=!var:~%%i,1!
       if "!var_!"=="" set /a num=%%i &&goto :eof)
    goto :eof

:test1
    set var=%1
    set var_=%2
    set num_=%3
    set str=!var:%var_%=!
    if "%str%"=="" goto :exit
    call :test %str%

    set /a len%num_%=!OSlen!-!num!
    echo 字符 %2 出现的次数 !len%num_%!
[ Last edited by youxi01 on 2006-11-30 at 06:47 AM ]

   此帖被 +5 点积分      点击查看详情   
评分人:【 redtek 分数: +5  时间:2006-11-30 05:51


2006-11-30 05:23
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tao0610
高级用户

朦胧的世界


积分 579
发帖 218
注册 2006-10-24
状态 离线
『第 29 楼』:  

用for /l 的我也贴一个!
@echo off&setlocal enabledelayedexpansion
set  str=adadfdfseffserfefsefseetsdgdsfjkljdsklfjdsfdsgdsafdsaf

for /l %%i in (0,1,100) do (
if "!str:~%%i,1!"=="" goto end
call :define !str:~%%i,1!
set/a !str:~%%i,1!+=1
)

:end
for /l %%x in (1,1,%num%) do (
call set exchang=%%!%%x!%%
call echo !%%x!--%%!%%x!%%个
if  !exchang! gtr !max! call set max=%%!%%x!%%&set maxstr=!%%x!)
echo.&echo.出现次数最多的是%maxstr%=%max%次
pause>nul&goto :eof

:define
if not defined %1 set/a num+=1&&set !num!=%1


   此帖被 +5 点积分      点击查看详情   
评分人:【 redtek 分数: +5  时间:2006-11-30 05:52





认识自己,降伏自己,改变自己
,才能改变别人!
2006-11-30 05:29
查看资料  发短消息 网志   编辑帖子  回复  引用回复
youxi01
高级用户




积分 846
发帖 247
注册 2006-10-27
来自 湖南==》广东
状态 离线
『第 30 楼』:  

欣赏15、18楼的代码,学习了!对以上代码稍做了改动,灵魂不变!
@echo off
setlocal EnableDelayedExpansion
set str=adadfdfseffserfefsefseetsdg

for /l %%i in (0 1 100) do (
   if "!str:~%%i,1!"=="" goto :exit
   set /a .!str:~%%i,1!+=1)
:exit
    set.
    for /f "delims== tokens=1,2" %%i in ('set.') do (
        if %%j GTR !maxl! set /a maxl=%%j && set max=%%i)
    echo 出现最多的是 %max:.=% 字符,共 %maxl% 个
pause


   此帖被 +5 点积分      点击查看详情   
评分人:【 redtek 分数: +5  时间:2006-11-30 08:31


2006-11-30 06:10
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] [3] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: