![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-08 22:12 |
共 47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,253 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 【讨论】一行分成多行 |
| 可打印版本 1,770 / 15 |
| 第1楼 plp626 | 发表于 2008-05-31 01:24 |
| 银牌会员 发帖 1,020 积分 2,278 | |
【讨论】一行分成多行论坛里不乏多行拼接成一行的,偶数行奇数行拼接的代码 仔细搜索了下,有类似问题已经被讨论过了,不好意思,算是重复贴了, http://www.cn-dos.net/forum/viewthread.php?tid=35438单行拆分,里面代码思想只得借鉴。。。。 ----------------------------------------------------- 题外话: 如果不是cmd痴迷者,为了目的实现大家确实得学学外部工具了 就这个样本: 用sed是如此地简洁高效: [ Last edited by plp626 on 2008-5-31 at 02:56 AM ] |
|
| 第2楼 plp626 | 发表于 2008-05-31 01:27 |
| 银牌会员 发帖 1,020 积分 2,278 | |
|
说白了就是告诉cmd将“;”当作换行符号
除了set 截取 if 判断";"可有它发? 怎么用换行符替换“;”? |
|
| 第3楼 26933062 | 发表于 2008-05-31 01:31 |
| 银牌会员 发帖 879 积分 2,268 | |
| 第4楼 plp626 | 发表于 2008-05-31 01:41 |
| 银牌会员 发帖 1,020 积分 2,278 | |
|
针对这个样本,我的代码:
str=test string; str=;%str% for /f "delims=" %%a in ("%str;="%")do call:arr %%a pause :arr if %~1.==. goto:eof echo\%1>>tmp.txt shift goto:arr [ Last edited by plp626 on 2008-5-31 at 01:44 AM ] |
|
| 第5楼 plp626 | 发表于 2008-05-31 01:51 |
| 银牌会员 发帖 1,020 积分 2,278 | |
|
re 26933062
兄的代码不错,有些时间不来这里看我写的代码竟然都。。。。不是P了 汗! |
|
| 第6楼 26933062 | 发表于 2008-05-31 01:57 |
| 银牌会员 发帖 879 积分 2,268 | |
|
再来一个
[ Last edited by 26933062 on 2008-5-31 at 01:58 AM ] |
|
| 第7楼 plp626 | 发表于 2008-05-31 02:04 |
| 银牌会员 发帖 1,020 积分 2,278 | |
|
上面6楼代码思想值得借鉴。。。
仔细看我上面发的代码其实是想这样: set str=1 86.2;2 90.0;3 87.8;4 83.4;5 88.0;6 84.1;7 83.2;8 80.6;9 74.0;10 73.7;11 71.5;12 72.7;13 70.4;14 75.0;15 72.1;16 80.0;17 75.4;18 83.7;19 87.0;20 88.0;21 85.6;22 81.1;23 90.0;24 88.7;25 89.6;26 86.1;27 75.5;28 81.6;29 80.1;30 88.0;31 72.2;32 77.6;33 80.0;34 72.9;35 72.6;36 70.5;37 78.0;38 69.5;39 72.4;40 72.4;41 74.3;42 74.4;43 80.0;44 88.1;45 88.5;46 90.9;47 94.0;48 89.0;49 94.2;50 97.0;51 90.0;52 95.2; set str=%str: =+% set str=%str: =;% for /f "delims=" %%a in ("%str%")do call:arr %%a pause :arr if %1.==. goto:eof set s=%1 echo\%s:+= % shift goto:arr 有些命令竟然那样用,犯晕了 [ Last edited by plp626 on 2008-5-31 at 02:06 AM ] |
|
| 第8楼 lxmxn | 发表于 2008-05-31 02:06 |
| 版主 发帖 4,938 积分 11,386 | |
| 第9楼 26933062 | 发表于 2008-05-31 02:07 |
| 银牌会员 发帖 879 积分 2,268 | |
|
没看懂,你这两句不矛盾吗?
set str=%str: =+% set str=%str: =;% |
|
| 第10楼 26933062 | 发表于 2008-05-31 02:10 |
| 银牌会员 发帖 879 积分 2,268 | |
|
8 楼 巧妙啊!
|
|
| 第11楼 plp626 | 发表于 2008-05-31 02:15 |
| 银牌会员 发帖 1,020 积分 2,278 | |
|
把空格换成+再把;换成空格
我写反了,真是不可原谅呵 其实还可以删掉那个替换分号的语句 @echo off set str=1 86.2;2 90.0;3 87.8;4 83.4;5 88.0;6 84.1;7 83.2;8 80.6;9 74.0;10 73.7;11 71.5;12 72.7;13 70.4;14 75.0;15 72.1;16 80.0;17 75.4;18 83.7;19 87.0;20 88.0;21 85.6;22 81.1;23 90.0;24 88.7;25 89.6;26 86.1;27 75.5;28 81.6;29 80.1;30 88.0;31 72.2;32 77.6;33 80.0;34 72.9;35 72.6;36 70.5;37 78.0;38 69.5;39 72.4;40 72.4;41 74.3;42 74.4;43 80.0;44 88.1;45 88.5;46 90.9;47 94.0;48 89.0;49 94.2;50 97.0;51 90.0;52 95.2; set str=%str: =+% for /f "delims=" %%a in ("%str%")do call:arr %%a pause :arr if %1.==. goto:eof set s=%1 echo\%s:+= % shift goto:arr |
|
| 第12楼 terse | 发表于 2008-05-31 02:34 |
| 银牌会员 发帖 946 积分 2,404 | |
|
一行分成多行论坛上应该有的吧 可能你没注意
|
|
| 第13楼 plp626 | 发表于 2008-05-31 02:42 |
| 银牌会员 发帖 1,020 积分 2,278 | |
Originally posted by terse at 2008-5-31 02:34 AM: 恩,是我没认真搜索,以后注意。。。 |
|
| 第14楼 FQ | 发表于 2008-05-31 11:12 |
| 社区乞丐 发帖 37 积分 -61 | |
|
如果从通用性来说3楼的是最理想的,毕竟SET设置变量是有限制的,如果不计较这个限制可以更加简化
[ Last edited by FQ on 2008-5-31 at 11:14 AM ] |
|
| 第15楼 WANKOILZ | 发表于 2008-05-31 12:15 |
| 初级用户 发帖 89 积分 198 来自 重庆 | |
|
3,6,8楼的都强,特别是6楼,不知道是怎么想出来的.11楼那个也够简洁.我也发一个,也算是一个方法:
[ Last edited by WANKOILZ on 2008-5-31 at 12:17 PM ] |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |