![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-12 12:38 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [求助]增加换行符的问题 |
| 可打印版本 1,345 / 7 |
| 第1楼 hgx126 | 发表于 2010-03-25 23:12 |
| 初级用户 发帖 80 积分 100 | |
|
[求助]增加换行符的问题 有多个文本文件,内容类似,其中一个a.txt如下:
我现在要将以上文本中以数字开头,紧接着是逗号或顿号的段落前增加一个换行符,如果数字后跟着的是逗号则换成顿号。如将上文转换后的结果如下: 我写了如下P处理, 可是它将4rst.uvw和xyz1.23中的逗号也替换成了顿号。请大家完善一下,如何避免这种情况。 |
|
| 第2楼 Hanyeguxing | 发表于 2010-03-25 23:51 |
| 银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂 | |
|
[ Last edited by Hanyeguxing on 2010-3-26 at 00:31 ] |
|
| 第3楼 Hanyeguxing | 发表于 2010-03-25 23:57 |
| 银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂 | |
Originally posted by hgx126 at 2010-3-25 23:12: 因为 "delims=、." 是全文本内进行分隔的。 for /f "delims=" %%i in (a.txt) do i解析文本,不以任何字符为分隔符号 set i=%%将每行赋值给变量i set j=!i:~1,1!和set j=!j:.=、!获取第二个字符,将.和、都替换成、 echo !i:~0,1!|findstr "">nul检查行首第一个字符是否为数字,是则返回0,不是则返回1 if !ERRORLEVEL!==0 ...... else echo %%i检查返回代码,是则...否则原样输出 if "!j!"=="、" ...... else echo %%i如果第二个字符是、则...否则原样输出 echo.&echo !i:~0,1!!j!!i:~2!指定输出效果 [ Last edited by Hanyeguxing on 2010-3-26 at 00:58 ] |
|
| 第4楼 hgx126 | 发表于 2010-03-29 12:05 |
| 初级用户 发帖 80 积分 100 | |
|
感谢兄弟们。可是当数字大于9时,就不能增加换行符呢?还请你们帮忙哈。
|
|
| 第5楼 qinchun36 | 发表于 2010-03-29 13:27 |
| 高级用户 发帖 400 积分 609 | |
|
那就换种脚本吧:
|
|
| 第6楼 Hanyeguxing | 发表于 2010-03-29 15:45 |
| 银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂 | |
|
[ Last edited by Hanyeguxing on 2010-3-29 at 17:42 ] |
|
| 第7楼 hgx126 | 发表于 2010-03-29 16:26 |
| 初级用户 发帖 80 积分 100 | |
|
6楼的怎么把大于4以后的段落全部去掉了呢?
|
|
| 第8楼 Hanyeguxing | 发表于 2010-03-29 16:37 |
| 银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂 | |
Originally posted by hgx126 at 2010-3-29 16:26: 它本身是不会把4以后的段落去掉的,你看哪部分代码有如此功能呢? 但需要说明的是,3楼和6楼的代码都没有对敏感字符的问题进行处理。 以3楼的代码为例: 例如文本的某行内容为: 123&echo 456 处理后将显示 123 456 再比如,文本的某行内容为: 123&exit 那么处理到此行后,批处理将直接终止并退出。 虽然6楼的代码修改后能够解决这个问题,但如果某行文本的内容是: %i% 或是 !j! 那么 在echo这内容时,如果批处理可以替换该变量,则直接替换,否则显示空。。。 所以,如果文本中含有敏感字符,最好用5楼的vbs进行处理 [ Last edited by Hanyeguxing on 2010-3-29 at 17:48 ] |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |