标题: [文本处理] [已解决]批处理怎样比较文本文件内字符长度? [打印本页]
作者: hucuibai 时间: 2011-4-11 10:05 标题: [已解决]批处理怎样比较文本文件内字符长度?
本帖最后由 hucuibai 于 2011-4-12 10:15 编辑
我有一个文本文件,内容是这样的
"2011-3-29 0:0:35",1,56129910365,56148967108,5008,71,3,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0
"2011-3-29 0:0:35",1,56129910365,43205880120,112008,76,3,0,5,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0
"2011-3-29 7:6:53",2,108066225232,116886745578,14,3,60,57,68,96,56,331701,320101,230904,0,0,4
"2011-3-29 7:6:53",2,108066225232,112414243532,20,3,78,95,74,67,64,130701,120101,320501,130501,230601,4
"2011-3-29 23:59:43",2,112424790273,116838673172,24,3,70,92,51,69,95,230905,320201,0,0,0,4
这只是其中一部分,前两行是正确的格式,就的,分割的数都是一样的,但是后面3行就没有那么多,我要删除这些格式错误的行(后面三行)!要怎么写,求教!
附件传上来了
或者说如何统计
"2011-3-29 0:0:35",1,56129910365,56148967108,5008,71,3,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0
这个标准格式字符内逗号的个数?
作者: hanyeguxing 时间: 2011-4-11 11:17
- @echo off&setlocal enableDelayedExpansion
- set "a=PlayerPropertyLog20110329.txt"
- (for /f "tokens=1* delims=," %%a in ('type "%a%"') do (
- set "b=%%b"
- for /l %%c in (0,1,8192) do if "!b:~%%c,1!"=="," set/a c+=1
- if not defined d set d=!c!
- set/a e=d-c,c=0
- if !e! neq 0 for /l %%c in (1,1,!e!) do set b=!b!,0
- echo;%%a,!b!
- ))>"输出_%a%"
复制代码
作者: hucuibai 时间: 2011-4-11 11:26
2# hanyeguxing
高手,有些地方看不懂,如果我想要删除这些行呢?
作者: hanyeguxing 时间: 2011-4-11 11:34
3# hucuibai - @echo off&setlocal enableDelayedExpansion
- set "a=PlayerPropertyLog20110329.txt"
- (for /f "tokens=1* delims=," %%a in ('type "%a%"') do (
- set "b=%%b"&set c=0
- for /l %%c in (0,1,8192) do if "!b:~%%c,1!"=="," set/a c+=1
- if not defined d set d=!c!
- if !c!==!d! echo;%%a,!b!
- ))>"输出_%a%"
复制代码
作者: hucuibai 时间: 2011-4-11 11:44
4# hanyeguxing
谢谢孤星同志,高手就是高手,有一个问题请教
for /l %%c in (0,1,8192) do if "!b:~%%c,1!"=="," set/a c+=1
这句截取b的时候为什么要加引号,不加就不行!
作者: hanyeguxing 时间: 2011-4-11 12:05
本帖最后由 hanyeguxing 于 2011-4-11 12:09 编辑
if "!b:~%%c,1!"=="," set/a c+=1
如果不加:
"!b:~%%c,1!"中的逗号会被解释为整条语句的分隔符而不是变量截取的分隔符号
","这个逗号也将被解释为整条语句的分隔符而不是字符
测试下面的代码:if,1,==,1,echo,哈哈
这里的逗号就都被解释为分隔符,分隔 if 语句中的命令、参数
那么原来的命令就会被解释为:
if !b:~%%c1!== set/a c+=1
语法错误!~
作者: hucuibai 时间: 2011-4-11 13:14
6# hanyeguxing
非常感谢!!
作者: hucuibai 时间: 2011-4-11 13:42
6# hanyeguxing
孤星大虾,问题又来了,用if语句一行一行匹配打印效率太低了,我的文件有四十多M,有没有简便一点的方法?
作者: Commander 时间: 2011-4-11 15:14
8# hucuibai - type a.txt | findstr ",.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*," >b.txt
复制代码
作者: hucuibai 时间: 2011-4-11 15:23
9# Commander
omg
朝拜一下!!谢谢谢谢!非常感谢!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |