找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 26096|回复: 4

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

[复制链接]
发表于 2010-4-29 19:39:43 | 显示全部楼层 |阅读模式
以第一行为标准对齐文本内容,例如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后得到

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢主动给标题标注[已解决]字样

查看全部评分

发表于 2010-4-29 19:52:13 | 显示全部楼层
1,其他行内容是否必定按顺序包含在第一(1111行)行内?例如2222行中的S和M
2,总列数是否为固定值

[ 本帖最后由 hanyeguxing 于 2010-4-29 19:54 编辑 ]
 楼主| 发表于 2010-4-30 13:15:47 | 显示全部楼层

回复 2楼 的帖子

1.其他行内容必定按顺序包含在第一(1111行)行内
2.总列数不固定,但其他行列数不会超过第一行列数
发表于 2010-4-30 14:41:57 | 显示全部楼层
以下代码按楼主提供的示例测试通过:
  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 编辑 ]

评分

参与人数 1PB +10 收起 理由
Batcher + 10 乐于助人

查看全部评分

 楼主| 发表于 2010-4-30 14:58:47 | 显示全部楼层

回复 4楼 的帖子

太感谢了,测试成功!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 09:03 , Processed in 0.019794 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表