中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-14 20:58
楼 主 怎样把文件按要求分行 发表于 2007-01-21 11:31 ·  IANA 局域网IP(Private-Use)
中级用户
★★
蝴蝶之吻
积分 430
发帖 177
注册 2006-09-20 12:00
UID 63170
来自 广东深圳
状态 离线
怎么样把下面的字分成一字一行,在每一行前面加一个空格.

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

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 ]
4 发表于 2007-01-21 12:07 ·  中国 广东 广州 天河区 电信
高级用户
★★★
潜水修练批处理
积分 788
发帖 366
注册 2006-12-31 02:43
UID 75048
性别 男
状态 离线
将你些文字复制到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 ]
5 发表于 2007-01-21 12:12 ·  中国 广东 电信
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
UID 51697
来自 成都
状态 离线
  不启用变量延迟功能,在不考虑特殊字符的情况下,可以使用如下代码:

@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没商量。
考虑问题复杂化,解决问题简洁化。
6 发表于 2007-01-21 12:40 ·  中国 湖南 娄底 新化县 电信
新手上路
积分 10
发帖 5
注册 2006-11-22 02:32
UID 71314
性别 男
状态 离线
4楼, 5楼很不错的代码...

4楼直接嵌套循环, 速度快代码简洁. 5楼name兄代码速度很快, 考虑的情况为所有字符都在一行, 另外, 如果文件内容过多, 可能一个环境变量无法容纳下所有字符, 未经测试, 呵~
7 发表于 2007-01-21 12:55 ·  中国 广东 电信
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
UID 51697
来自 成都
状态 离线
  5楼的代码仅针对楼主所提供的文本。仔细观察那段字符,其实处于同一行上,所以就偷了一下懒。其实要处理多行内容也是可以的,添上一个 call 语句就可以了。最近不怎么喜欢启用变量延迟,换成call来处理,为的是避免把文件中含有的感叹号过滤掉。

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

[ Last edited by namejm on 2007-1-20 at 11:58 PM ]
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
8 发表于 2007-01-21 13:18 ·  中国 广东 深圳 电信
中级用户
★★
蝴蝶之吻
积分 430
发帖 177
注册 2006-09-20 12:00
UID 63170
来自 广东深圳
状态 离线
其实我发的是GB2312里的一部份文字,它们都在同一行的。好,4楼5楼的代码实在是太好了。
9 发表于 2007-01-21 13:21 ·  中国 广东 电信
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
UID 51697
来自 成都
状态 离线
  3楼的vbs代码才是最快的。
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
10 发表于 2007-01-21 23:51 ·  中国 广东 广州 天河区 电信
高级用户
★★★
潜水修练批处理
积分 788
发帖 366
注册 2006-12-31 02:43
UID 75048
性别 男
状态 离线
Originally posted by namejm at 2007-1-20 11:55 PM:
  4楼的代码通过计数来做也挺不错的,把终止值设置为大大超过变量所能接收的范围的10000,避免了处理不彻底的bug。但是这个代码还有一个小bug:把第一个字符抛弃了。解决办法是:把for /l 的初值设置为0。


太大意了了,道行不够啊

另外看来要学学VBS了
11 发表于 2007-01-22 21:33 ·  IANA 局域网IP(Private-Use)
中级用户
★★
蝴蝶之吻
积分 430
发帖 177
注册 2006-09-20 12:00
UID 63170
来自 广东深圳
状态 离线
可是我要的就是BAT的呀...
上回打错字了,不是加空格,而是加上序号在后面加上如
(空格)啊(空格)56789
(空格)阿(空格)56790
....
从56789开始
12 发表于 2007-01-22 22:21 ·  中国 广东 电信
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
UID 51697
来自 成都
状态 离线
  5楼代码已经更新,添加了序号列。
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
13 发表于 2007-01-22 23:21 ·  中国 安徽 芜湖 电信
高级用户
★★
积分 537
发帖 219
注册 2006-10-31 21:08
UID 69036
性别 男
来自 芜湖
状态 离线
@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
)




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


"
"









14 发表于 2007-01-23 07:13 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
UID 59080
状态 离线
  我也来灌灌水 ^_^

@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)
15 发表于 2007-01-31 06:49 ·  中国 北京 朝阳区 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
UID 63324
性别 男
状态 离线
欣赏~~
    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
论坛跳转: