中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 怎样把文件按要求分行 上一主题 | 下一主题
zouzhxi
中级用户

蝴蝶之吻


积分 430
发帖 177
注册 2006-9-20
来自 广东深圳
状态 离线
『楼 主』:  怎样把文件按要求分行

怎么样把下面的字分成一字一行,在每一行前面加一个空格.

  Quote:
啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹





Butterfly Kiss Blog
计算机DIY联盟论坛
2007-1-21 11:31
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (234693993)  编辑帖子  回复  引用回复
pengfei
银牌会员




积分 1218
发帖 485
注册 2006-7-21
来自 湖南.娄底
状态 离线
『第 2 楼』:  

@echo off

setlocal enabledelayedexpansion

for /f "tokens=*" %%i in (test.txt) do call :go %%i

start "" result.txt

exit

:go

set num=0

set x=%*

:_go

>>result.txt echo  !x:~%num%,1!

set /a num+=1

if not "!x:~%num%,1!"=="" goto :_go

goto :eof



业精于勤而荒于嬉,形成于思而毁于随。
2007-1-21 11:58
查看资料  发送邮件  发短消息 网志  OICQ (573381312)  编辑帖子  回复  引用回复
jmz573515
银牌会员




积分 1212
发帖 464
注册 2006-12-13
状态 离线
『第 3 楼』:  


set ws=createobject("wscript.shell")
set fso=createobject("scripting.filesystemobject")
set ws=createobject("wscript.shell")
set file=fso.opentextfile("a.txt",1)
i=56789
do while file.AtEndOfStream <> True
yz=file.read(1)
s=s & " "& yz &" "& i& vbcrlf
i=i+1
loop
file.close
set file=fso.createtextfile("OUT.txt",true)
file.write s
file.close
Ws.run "notepad.exe OUT.TXT"
[ Last edited by jmz573515 on 2007-1-29 at 07:15 PM ]

2007-1-21 12:04
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dikex
高级用户

潜水修练批处理



积分 788
发帖 366
注册 2006-12-31
状态 离线
『第 4 楼』:  

将你些文字复制到file.txt文件里面
setlocal ENABLEDELAYEDEXPANSION

for /f "delims=" %%a in (file.txt) do (
   set str1=%%a
   for /l %%i in (0,1,10000) do (
      if "!str1:~%%i,1!"=="" exit
      echo+ !str1:~%%i,1!>>aa.txt
   )
)
1改0

[ Last edited by dikex on 2007-1-22 at 07:53 PM ]

2007-1-21 12:07
查看资料  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 5 楼』:  

  不启用变量延迟功能,在不考虑特殊字符的情况下,可以使用如下代码:
@echo off
echo.
echo     正在处理数据,请耐心等待...
cd.>result.txt
set num=56789
for /f "delims=" %%i in (test.txt) do set str=%%i

:intercept
if not "%str%"=="" (
    >>result.txt call echo  %str:~0,1% %%num%%
    set /a num+=1
    set str=%str:~1%
    goto intercept
)

start result.txt
  呵呵,还要求每行前面有一个空格,补上。

[ Last edited by namejm on 2007-1-22 at 09:19 AM ]



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2007-1-21 12:12
查看资料  发短消息 网志   编辑帖子  回复  引用回复
mulinsen
新手上路





积分 10
发帖 5
注册 2006-11-22
状态 离线
『第 6 楼』:  

4楼, 5楼很不错的代码...

4楼直接嵌套循环, 速度快代码简洁.  5楼name兄代码速度很快, 考虑的情况为所有字符都在一行, 另外, 如果文件内容过多, 可能一个环境变量无法容纳下所有字符, 未经测试, 呵~

2007-1-21 12:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 7 楼』:  

  5楼的代码仅针对楼主所提供的文本。仔细观察那段字符,其实处于同一行上,所以就偷了一下懒。其实要处理多行内容也是可以的,添上一个 call 语句就可以了。最近不怎么喜欢启用变量延迟,换成call来处理,为的是避免把文件中含有的感叹号过滤掉。

  4楼的代码通过计数来做也挺不错的,把终止值设置为大大超过变量所能接收的范围的10000,避免了处理不彻底的bug。但是这个代码还有一个小bug:把第一个字符抛弃了。解决办法是:把for /l 的初值设置为0。

[ Last edited by namejm on 2007-1-20 at 11:58 PM ]



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2007-1-21 12:55
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zouzhxi
中级用户

蝴蝶之吻


积分 430
发帖 177
注册 2006-9-20
来自 广东深圳
状态 离线
『第 8 楼』:  

其实我发的是GB2312里的一部份文字,它们都在同一行的。好,4楼5楼的代码实在是太好了。



Butterfly Kiss Blog
计算机DIY联盟论坛
2007-1-21 13:18
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (234693993)  编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 9 楼』:  

  3楼的vbs代码才是最快的。



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2007-1-21 13:21
查看资料  发短消息 网志   编辑帖子  回复  引用回复
dikex
高级用户

潜水修练批处理



积分 788
发帖 366
注册 2006-12-31
状态 离线
『第 10 楼』:  



  Quote:
Originally posted by namejm at 2007-1-20 11:55 PM:
  4楼的代码通过计数来做也挺不错的,把终止值设置为大大超过变量所能接收的范围的10000,避免了处理不彻底的bug。但是这个代码还有一个小bug:把第一个字符抛弃了。解决办法是:把for /l 的初值设置为0。

太大意了了,道行不够啊

另外看来要学学VBS了

2007-1-21 23:51
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zouzhxi
中级用户

蝴蝶之吻


积分 430
发帖 177
注册 2006-9-20
来自 广东深圳
状态 离线
『第 11 楼』:  

可是我要的就是BAT的呀...
上回打错字了,不是加空格,而是加上序号在后面加上如
(空格)啊(空格)56789
(空格)阿(空格)56790
....
从56789开始



Butterfly Kiss Blog
计算机DIY联盟论坛
2007-1-22 21:33
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (234693993)  编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 12 楼』:  

  5楼代码已经更新,添加了序号列。



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2007-1-22 22:21
查看资料  发短消息 网志   编辑帖子  回复  引用回复
huzixuan
高级用户




积分 537
发帖 219
注册 2006-10-31
来自 芜湖
状态 离线
『第 13 楼』:  

@echo off
setlocal ENABLEDELAYEDEXPANSION
for /f "delims=*" %%i in ('type file.txt') do call :do "%%i"
:do
set a=0
set b="%1"
:test
if not "!b:~%a%,1!"=="" (echo  !b:~%a%,1!>>bb.txt
set /a a+=1
goto test
)




为什么这样写会出现 “” “” ???


"
"











2007-1-22 23:21
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 14 楼』:  

  我也来灌灌水 ^_^
@echo off&Setlocal EnableDelayedExpansion
set file=%random%.txt
set/p=<nul>%file%
set b=15789
for /f "delims=" %%a in (note.txt) do (
        set str=%%a
        set a=0
        call :loop !str!
)
start %file%
goto :eof

:loop
set str1=%1
if "!str1:~%a%,1!"=="" (goto :eof) else (>>%file% echo= !str1:~%a%,1! %b%
        set/a a+=1&set/a b+=1
        goto loop)


2007-1-23 07:13
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 15 楼』:  

欣赏~~



    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
2007-1-31 06:49
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: