中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-05 13:50
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 统计文档中,逗号出现的次数 查看 797 回复 4
楼 主 统计文档中,逗号出现的次数 发表于 2007-08-06 23:34 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
看到 namejm 荣誉版主 曾经发的一个老帖,觉得挺有意识,原帖中又没有满意的答案
所以重发出来讨论一下,看有没有更好的方法.
a.txt内容
1 ,2, 3,4,
7,8, 9 9,w ww,qer, ,,

要求:
统计a.txt中,逗号出现的次数.

原帖
http://www.cn-dos.net/forum/viewthread.php?tid=21250&fpage=1&highlight=%2Bnamejm

[ Last edited by 26933062 on 2007-8-7 at 02:49 AM ]
2 发表于 2007-08-07 02:52 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
无人问津!
难道是题目太简单了,都不愿回答?
那就增加点难度,
1:a.txt内容如下,
2:-----------------------------,
3:(注意:有个空行是由空格组成),
4:!" ",!

6::`-=\]
















Last edited by 26933062 on 2007-8-7 at 02:40 PM ]
3 发表于 2007-08-07 11:27 ·  中国 辽宁 本溪 联通
银牌会员
★★★
积分 1,212
发帖 464
注册 2006-12-13 21:11
19年会员
UID 73417
性别 男
状态 离线
vbs的

msgbox ubound(split(createobject("scripting.filesystemobject").opentextfile("a.txt").readall,","))
4 发表于 2007-08-07 14:39 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
集各家所长.

@echo off
for /f "delims=" %%i in ('findstr /n .* a.txt') do (
set "var=%%i"
call :ss
)
echo.&echo 共有 %a% 个逗号.
echo.&pause&exit
:ss
set "num=%var:"=%"
set "num=%num:*:=%"
:lis
echo "%num%"|findstr ",">nul&&(
set/a a+=1
set "num=%num:*,=%"
goto lis
)
setlocal ENABLEDELAYEDEXPANSION
set var=!var:*:=!
echo.!var!
endlocal
goto :eof


不用延迟好像也可以

@echo off
for /f "tokens=1* delims=:" %%i in ('findstr /n .* a.txt') do (
echo.%%j
set "var=%%i%%j"
call :ss
)
echo.&echo 共有 %a% 个逗号.
echo.&pause&exit
:ss
set "num=%var:"=%"
set "num=%num:*:=%"
:lis
echo "%num%"|findstr ",">nul&&(
set/a a+=1
set "num=%num:*,=%"
goto lis
)
goto :eof


[ Last edited by 26933062 on 2007-8-7 at 03:04 PM ]
5 发表于 2007-08-07 17:03 ·  中国 江苏 无锡 电信
初级用户
积分 80
发帖 43
注册 2007-04-21 23:44
19年会员
UID 86017
性别 男
状态 离线
呵呵。不用显示的话:

@echo %on% off
set n=0
for /f "delims=" %%a in (a.txt) do (
set "str=%%a"
call set "str=%%str:"=%%"
call :ct
)
echo 共有%n%个逗号。
pause&&goto :eof
:ct
set m=0
:ct2
call set "onestr=%%str:~%m%,1%%"
set /a m+=1
if "%onestr%"=="," set /a n+=1
if "%onestr%"=="" goto :eof
goto :ct2

楼上知道我是谁了吧~~ 呵呵
论坛跳转: