![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-29 07:11 |
共 47,816 主题排行 / 349,916 发帖 / 今日 2 篇 / 48,265 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 怎样把文件按要求分行 |
| 可打印版本 2,266 / 14 |
| 第1楼 zouzhxi | 发表于 2007-01-21 11:31 |
| 中级用户 发帖 177 积分 430 来自 广东深圳 | |
|
怎样把文件按要求分行 怎么样把下面的字分成一字一行,在每一行前面加一个空格.
|
|
| 第2楼 pengfei | 发表于 2007-01-21 11:58 |
| 银牌会员 发帖 485 积分 1,218 来自 湖南.娄底 | |
|
@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楼 jmz573515 | 发表于 2007-01-21 12:04 |
| 银牌会员 发帖 464 积分 1,212 | |
|
[ Last edited by jmz573515 on 2007-1-29 at 07:15 PM ] |
|
| 第4楼 dikex | 发表于 2007-01-21 12:07 |
| 高级用户 发帖 366 积分 788 | |
|
将你些文字复制到file.txt文件里面
1改0 [ Last edited by dikex on 2007-1-22 at 07:53 PM ] |
|
| 第5楼 namejm | 发表于 2007-01-21 12:12 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
不启用变量延迟功能,在不考虑特殊字符的情况下,可以使用如下代码:
呵呵,还要求每行前面有一个空格,补上。 [ Last edited by namejm on 2007-1-22 at 09:19 AM ] |
|
| 第6楼 mulinsen | 发表于 2007-01-21 12:40 |
| 新手上路 发帖 5 积分 10 | |
|
4楼, 5楼很不错的代码...
4楼直接嵌套循环, 速度快代码简洁. 5楼name兄代码速度很快, 考虑的情况为所有字符都在一行, 另外, 如果文件内容过多, 可能一个环境变量无法容纳下所有字符, 未经测试, 呵~ |
|
| 第7楼 namejm | 发表于 2007-01-21 12:55 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
5楼的代码仅针对楼主所提供的文本。仔细观察那段字符,其实处于同一行上,所以就偷了一下懒。其实要处理多行内容也是可以的,添上一个 call 语句就可以了。最近不怎么喜欢启用变量延迟,换成call来处理,为的是避免把文件中含有的感叹号过滤掉。
4楼的代码通过计数来做也挺不错的,把终止值设置为大大超过变量所能接收的范围的10000,避免了处理不彻底的bug。但是这个代码还有一个小bug:把第一个字符抛弃了。解决办法是:把for /l 的初值设置为0。 [ Last edited by namejm on 2007-1-20 at 11:58 PM ] |
|
| 第8楼 zouzhxi | 发表于 2007-01-21 13:18 |
| 中级用户 发帖 177 积分 430 来自 广东深圳 | |
|
其实我发的是GB2312里的一部份文字,它们都在同一行的。好,4楼5楼的代码实在是太好了。
|
|
| 第9楼 namejm | 发表于 2007-01-21 13:21 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
3楼的vbs代码才是最快的。
|
|
| 第10楼 dikex | 发表于 2007-01-21 23:51 |
| 高级用户 发帖 366 积分 788 | |
Originally posted by namejm at 2007-1-20 11:55 PM: 太大意了了,道行不够啊 另外看来要学学VBS了 |
|
| 第11楼 zouzhxi | 发表于 2007-01-22 21:33 |
| 中级用户 发帖 177 积分 430 来自 广东深圳 | |
|
可是我要的就是BAT的呀...
上回打错字了,不是加空格,而是加上序号在后面加上如 (空格)啊(空格)56789 (空格)阿(空格)56790 .... 从56789开始 |
|
| 第12楼 namejm | 发表于 2007-01-22 22:21 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
5楼代码已经更新,添加了序号列。
|
|
| 第13楼 huzixuan | 发表于 2007-01-22 23:21 |
| 高级用户 发帖 219 积分 537 来自 芜湖 | |
|
@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楼 lxmxn | 发表于 2007-01-23 07:13 |
| 版主 发帖 4,938 积分 11,386 | |
|
我也来灌灌水 ^_^
|
|
| 第15楼 redtek | 发表于 2007-01-31 06:49 |
| 金牌会员 发帖 1,147 积分 2,902 | |
|
欣赏~~
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |