中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-11 17:45
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 区别每行汉字开头还是非汉字开头。并自动整理 查看 750 回复 10
楼 主 区别每行汉字开头还是非汉字开头。并自动整理 发表于 2009-04-21 03:35 ·  中国 湖北 十堰 电信
初级用户
积分 20
发帖 19
注册 2009-04-20 13:27
17年会员
UID 143372
性别 女
状态 离线
区别每行汉字开头还是非汉字开头。并自动整理

我有一些文本1.txt。内容如下:


干眼症患者的渗透压是:
1.干眼症患者
的渗透压是
A.大于305m Osm/L
B.等于300m Osm/L
C.小于300m Osm/L
D.等于312m Osm/L
E.大于312m Osm/L
2.角巩膜缘的
宽度
约为
A.0.9mm
B.1mm
C.0.5mm
D.1.2mm
E.O.75mm
3.口服乙酰唑胺可
出现


我希望题目都是一行。这样方便我整理。希望批处理的功能整理为
1.干眼症患者的渗透压是
A.大于305m Osm/L
B.等于300m Osm/L
C.小于300m Osm/L
D.等于312m Osm/L
E.大于312m Osm/L
2.角巩膜缘的宽度约为
A.0.9mm
B.1mm
C.0.5mm
D.1.2mm
E.O.75mm
3.口服乙酰唑胺可出现


思路是每行第一个字母只能是数字或字母。如果是汉字。则自动cut这一段汉字到上一行。

谢谢大大们解答。
2 发表于 2009-04-21 04:00 ·  中国 北京 联通
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
20年会员
UID 55770
状态 离线
干眼症患者的渗透压是:
1.干眼症患者
的渗透压是

这个是不是弄错,多打了一行

有问题请发论坛或者自行搜索,再短消息问我的统统是SB
3 发表于 2009-04-21 04:04 ·  中国 湖北 十堰 电信
初级用户
积分 20
发帖 19
注册 2009-04-20 13:27
17年会员
UID 143372
性别 女
状态 离线
恩。

原始文本应该是

1.干眼症患者
的渗透压是
A.大于305m Osm/L
B.等于300m Osm/L
C.小于300m Osm/L
D.等于312m Osm/L
E.大于312m Osm/L
2.角巩膜缘的
宽度
约为
A.0.9mm
B.1mm
C.0.5mm
D.1.2mm
E.O.75mm
3.口服乙酰唑胺可
出现


就是首字只能是数字或字母。。。
4 发表于 2009-04-21 04:49 ·  中国 北京 联通
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
20年会员
UID 55770
状态 离线
思路如果回车换行之后的字符不是字母或者数字,就把回车换行丢掉

@echo off
copy a.txt 1.txt /y
fr 1.txt -rnnlic:"(\r\n)()" -t:"\2"
start 1.txt
pause

FR 下载: http://baiy.cn/utils/fr/index.htm
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
netbenton +3 2009-04-22 11:04

有问题请发论坛或者自行搜索,再短消息问我的统统是SB
5 发表于 2009-04-21 04:59 ·  中国 湖北 十堰 电信
初级用户
积分 20
发帖 19
注册 2009-04-20 13:27
17年会员
UID 143372
性别 女
状态 离线
谢谢啦。可以了。呵呵。专业学的不一样。思路也差这么远。还是学计算机的牛。。。
6 发表于 2009-04-21 05:02 ·  中国 湖北 黄石 电信
中级用户
★★
积分 330
发帖 244
注册 2006-04-14 14:07
20年会员
UID 53823
性别 男
来自 湖北
状态 离线
sed ":a;$!N;s/\n\([\x80-\xFF]\)/\1/;ta;P;D" aa.txt
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
yishanju +3 2009-04-22 09:03
7 发表于 2009-04-21 14:00 ·  中国 广东 东莞 电信
银牌会员
★★★
批处理编程迷
积分 1,916
发帖 752
注册 2008-12-28 04:30
17年会员
UID 135147
性别 男
来自 广西
状态 离线
@echo off&setlocal enabledelayedexpansion
set add=
for /f "delims=" %%a in (1.txt) do (set "str=%%a"&call :sub)
echo !add!
pause
goto :eof

:sub
set one=!str:~,1!
if !one! gtr zz (set "add=!add!!str!") else (echo.!add!&set add=!str!)
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
yishanju +3 2009-04-22 09:03
精简
=> 个人网志
8 发表于 2009-04-21 21:51 ·  中国 辽宁 本溪 联通
银牌会员
★★★
积分 1,212
发帖 464
注册 2006-12-13 21:11
19年会员
UID 73417
性别 男
状态 离线

set fso=createobject("scripting.filesystemobject")
set file=fso.opentextfile("1.txt")
s=file.readall
file.close
do until instr(s,vbcrlf)=0
i=instr(s,vbcrlf)
if instr("123456789ABCDEFGHIZKLMNOPQRSTUVWXYZabcdefghizklmnopqrstuvwxyz",mid(s,i+2,1))<>0 then
sm=sm&left(s,i) & vbcrlf
else
sm=sm & left(s,i-1)
end if
s=mid(s,i+2)
loop
wscript.echo sm
9 发表于 2009-04-22 00:29 ·  中国 湖北 黄石 电信
中级用户
★★
积分 330
发帖 244
注册 2006-04-14 14:07
20年会员
UID 53823
性别 男
来自 湖北
状态 离线
fso=WScript.createobject("scripting.filesystemobject");
sss=fso.opentextfile("1.txt").readall();
re=/\r\n(?=)/g
sss=sss.replace(re,"");
fso.createtextfile("1_dest.txt",1,0).write(sss)


[ Last edited by freeants001 on 2009-4-22 at 00:32 ]
10 发表于 2009-04-22 05:55 ·  中国 湖北 十堰 电信
初级用户
积分 20
发帖 19
注册 2009-04-20 13:27
17年会员
UID 143372
性别 女
状态 离线
谢谢大家了。。。
11 发表于 2009-04-22 09:03 ·  中国 北京 联通
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
20年会员
UID 55770
状态 离线
这个帖子值得收藏了

有问题请发论坛或者自行搜索,再短消息问我的统统是SB
论坛跳转: