[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决批处理怎样对齐文本内容?

以第一行为标准对齐文本内容,例如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后得到
1

评分人数

    • Batcher: 感谢主动给标题标注[已解决]字样PB + 2

1,其他行内容是否必定按顺序包含在第一(1111行)行内?例如2222行中的S和M
2,总列数是否为固定值

[ 本帖最后由 hanyeguxing 于 2010-4-29 19:54 编辑 ]
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

回复 2楼 的帖子

1.其他行内容必定按顺序包含在第一(1111行)行内
2.总列数不固定,但其他行列数不会超过第一行列数

TOP

以下代码按楼主提供的示例测试通过:
  1. @echo off&setlocal enabledelayedexpansion
  2. set "han=a.txt"&set "ye=c.csv"
  3. set/p xing=<"%han%"&>"%ye%" echo.!xing!
  4. for /F "tokens=1* delims=," %%a in ("%xing%") do set "gu=,%%b"
  5. for /F "tokens=1,2* delims=:," %%a in ('findstr /n .* "%han%"') do if not %%a==1 (
  6.         set a=%gu%
  7.         for %%d in (%%c) do set "a=!a:,%%d=,#%%d!"
  8.         for %%d in (!a!) do set b=%%d&if not "!b:~0,1!"=="#" (set "c=!c!,") else set "c=!c!,%%d"
  9.         set "c=!c:,,#=,0,!"
  10.         >>"%ye%" echo.%%b!c!
  11.         set c=
  12. )
  13. start "" "%ye%"
复制代码

[ 本帖最后由 hanyeguxing 于 2010-4-30 18:55 编辑 ]
1

评分人数

寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

回复 4楼 的帖子

太感谢了,测试成功!!

TOP

返回列表