中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-08 16:13
47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,253 会员排行
DOS批处理 & 脚本技术(批处理室) » [求助]怎样用bat对齐文本?
可打印版本  5,729 / 30
第1楼 wydos 发表于 2006-12-13 07:15
中级用户 发帖 117 积分 304
[求助]怎样用bat对齐文本?
文本内容形式是这样的:
新编中医临证备要 作者:卢祥之  SS号:10804820 索书号:R24/15
中医临床学基础 作者:湖南中医学院  SS号:10806223 索书号:R24/1
临床证治精论 作者:徐春家 秦群  SS号:10806254 索书号:R24/152
.
.
.
我想把它按类对齐,变成如下形式:
新编中医临证备要 作者:卢祥之  SS号:10804820 索书号:24/15
中医临床学基础 作者:湖南中医学院 SS号:10806223 索书号:24/1
临床证治精论 作者:徐春家 秦群  SS号:10806254 索书号:24/152
.
.
.
.
.

[ Last edited by wydos on 2006-12-13 at 07:17 AM ]
第2楼 a9319751 发表于 2006-12-13 07:19
中级用户 发帖 170 积分 439
隐隐约约记得哪个能制造TAB跳格
好象是8个空格
第3楼 namejm 发表于 2006-12-13 07:35
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  需要统计每一节字符串的最大长度才好排版。
第4楼 lxmxn 发表于 2006-12-13 07:53
版主 发帖 4,938 积分 11,386

  不知道WMIC可不可以,问下版主就知道了。
第5楼 youxi01 发表于 2006-12-13 08:03
高级用户 发帖 247 积分 846 来自 湖南==》广东
个人认为,纯粹的P很难实现,因为P很难判断变量的字节数,所以要借助于vbs。


说明:将要处理的文字保存为test.txt,本代码保存为:ok.bat

[ Last edited by youxi01 on 2006-12-13 at 08:14 AM ]
第6楼 electronixtar 发表于 2006-12-13 09:15
铂金会员 发帖 2,672 积分 7,493

不知道WMIC可不可以,问下版主就知道了。


汗,WMIC拿来处理文本~~~
第7楼 pengfei 发表于 2006-12-13 12:09
银牌会员 发帖 485 积分 1,218 来自 湖南.娄底


只测试了你给的三行, 其他格式和特殊字符没有考虑. 请注意冒号全角和半角的区别.

[ Last edited by pengfei on 2006-12-13 at 12:53 PM ]
第8楼 zh159 发表于 2006-12-13 14:30
金牌会员 发帖 1,467 积分 3,687
“delims=作者:SS号:索书号:”中有个缺点,只要某个位置有其中一种字符就导致缺失
可以先考虑将“作者:”“SS号:”“索书号:”替换为$后再处理

亮点:检测字节数
>Temp.txt set/p=!Temp_%1!<nul
for %%i in (Temp.txt) do set %1=%%~zi




[ Last edited by zh159 on 2006-12-13 at 09:35 AM ]
第9楼 HUNRYBECKY 发表于 2006-12-13 21:53
银牌会员 发帖 442 积分 1,179
都太棒了,我对FOR语句总是用的不好。想不到FOR语句用处这么大,学习了。
第10楼 HUNRYBECKY 发表于 2006-12-13 22:14
银牌会员 发帖 442 积分 1,179
Originally posted by youxi01 at 2006-12-13 08:03:
个人认为,纯粹的P很难实现,因为P很难判断变量的字节数,所以要借助于vbs。
第11楼 youxi01 发表于 2006-12-14 01:18
高级用户 发帖 247 积分 846 来自 湖南==》广东
因为::在vbs中可以被认识(识别为换行),而rem却不能被vbs认识!
第12楼 youxi01 发表于 2006-12-14 01:22
高级用户 发帖 247 积分 846 来自 湖南==》广东
7F的问题:要是书名中有E文字符或者数字,怎么解决?
8F用文件的大小来判断字节数,真是高!
第13楼 qzwqzw 发表于 2006-12-14 01:51
银牌会员 发帖 636 积分 2,343
对齐还是先补后拆最省事。
第14楼 无奈何 发表于 2006-12-14 02:31
荣誉版主 发帖 356 积分 1,338
zh159 兄 8 楼用字节数判长确是亮点,CMD 下字串汉字和英文字母长度都是 1 ,用字节判断很好的解决了这个问题。不过 CMD 下特殊字符实在是然人头疼的问题,我也一直没有找到好的方法。
本帖是很典型的格式化输出的问题,大多数语言 pringf 都能很好解决。
可以试试下面的 awk 的脚本:
用法:gawk -f script.awk file.txt

gawk 下载:http://www.klabaster.com/progs/gawk32.zip

[ Last edited by 无奈何 on 2006-12-14 at 03:23 AM ]
第15楼 ccwan 发表于 2006-12-14 02:44
金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊
恕我愚钝,兄的代码看不懂。
为防拍马的嫌疑,就不给兄加分了,见谅。
1 2 3  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023