标题: [文本处理] [已解决批处理怎样对齐文本内容? [打印本页]
作者: daohe 时间: 2010-4-29 19:39 标题: [已解决批处理怎样对齐文本内容?
以第一行为标准对齐文本内容,例如a.txt内容
1111,0,S,0,M,0,L,0,XL,0,XXL
2222,S,M
2323,M,XXL
4444,S,XL
对齐后得到b.txt内容
1111,0,S,0,M,0,L,0,XL,0,XXL
2222, ,S, ,M, , , , , ,
2323, , , ,M, , , , , ,XXL
4444, ,S, , , , , ,XL, ,
然后再对齐内容的前两个逗号间加上0,如第二行,s对齐后,在他的前面加0,得到c.txt
1111,0,S,0,M,0,L,0,XL,0,XXL
2222,0,S,0,M, , , , , ,
2323, , ,0,M, , , , ,0,XXL
4444,0,S, , , , ,0,XL, ,
注:b,c文本中逗号间的空格是可以不用保留的,最后c.txt改扩展名为c.csv后得到
作者: hanyeguxing 时间: 2010-4-29 19:52
1,其他行内容是否必定按顺序包含在第一(1111行)行内?例如2222行中的S和M
2,总列数是否为固定值
[ 本帖最后由 hanyeguxing 于 2010-4-29 19:54 编辑 ]
作者: daohe 时间: 2010-4-30 13:15 标题: 回复 2楼 的帖子
1.其他行内容必定按顺序包含在第一(1111行)行内
2.总列数不固定,但其他行列数不会超过第一行列数
作者: hanyeguxing 时间: 2010-4-30 14:41
以下代码按楼主提供的示例测试通过:- @echo off&setlocal enabledelayedexpansion
- set "han=a.txt"&set "ye=c.csv"
- set/p xing=<"%han%"&>"%ye%" echo.!xing!
- for /F "tokens=1* delims=," %%a in ("%xing%") do set "gu=,%%b"
- for /F "tokens=1,2* delims=:," %%a in ('findstr /n .* "%han%"') do if not %%a==1 (
- set a=%gu%
- for %%d in (%%c) do set "a=!a:,%%d=,#%%d!"
- for %%d in (!a!) do set b=%%d&if not "!b:~0,1!"=="#" (set "c=!c!,") else set "c=!c!,%%d"
- set "c=!c:,,#=,0,!"
- >>"%ye%" echo.%%b!c!
- set c=
- )
- start "" "%ye%"
复制代码
[ 本帖最后由 hanyeguxing 于 2010-4-30 18:55 编辑 ]
作者: daohe 时间: 2010-4-30 14:58 标题: 回复 4楼 的帖子
太感谢了,测试成功!!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |