中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 每两行合并成一行 上一主题 | 下一主题
wydos
中级用户





积分 304
发帖 117
注册 2006-4-4
状态 离线
『楼 主』:  每两行合并成一行

@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in (%*) do (
set /a n+=1
set !n!line=%%i
if !n! equ 2 (
echo !1line! !2line!>>result.txt
set /a n=0
)
)
endlocal

可以依次类推把每n行合并成一行。

[ Last edited by wydos on 2006-12-11 at 01:58 AM ]

2006-12-10 23:24
查看资料  发送邮件  发短消息 网志  OICQ (327337973)  编辑帖子  回复  引用回复
lotus516
高级用户

论坛上抢劫的


积分 551
发帖 246
注册 2006-9-21
状态 离线
『第 2 楼』:  

这个也叫原创,相似的内容好久前就有了!!
http://www.cn-dos.net/forum/view ... ghlight=%2Blotus516

2006-12-11 00:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wydos
中级用户





积分 304
发帖 117
注册 2006-4-4
状态 离线
『第 3 楼』:  

真是惭愧呀!!!
不过这是我昨天处理文本时想出来的,还不知道有类似的贴:
http://www.cn-dos.net/forum/view ... ghlight=%2Blotus516
搜贴时关键词没用好!
惭愧!!
惭愧!!
还请版主把它删掉!

2006-12-11 00:58
查看资料  发送邮件  发短消息 网志  OICQ (327337973)  编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


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

  其实没必要删除主题,把 [原创] 字样取消,然后再把代码的功能增强一点(如何增强请自己想,我还没想到该如何增强^_^),这样就不会和以前的内容重复了。



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-12-11 01:02
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ccwan
金牌会员




积分 2725
发帖 1160
注册 2006-9-23
来自 河北廊坊
状态 离线
『第 5 楼』:  

不必删掉,代码又没有指定版权,难道写出来绝对不能与别人相似吗?
只要是自己努力学习的结果,何必在乎这些呢?



三人行,必有吾师焉。   学然后知不足,教然后知困,然后能自强也。
2006-12-11 01:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wydos
中级用户





积分 304
发帖 117
注册 2006-4-4
状态 离线
『第 6 楼』:  

谢谢 5 楼的鼓励!
关于代码的功能增强,感觉没有思路

2006-12-11 02:11
查看资料  发送邮件  发短消息 网志  OICQ (327337973)  编辑帖子  回复  引用回复
wydos
中级用户





积分 304
发帖 117
注册 2006-4-4
状态 离线
『第 7 楼』:  

改了一下:
把两行合并和n行合并统一
@echo off
setlocal enabledelayedexpansion
echo 请问你要每几行合并成一行,请输入数字,回车确定!
@set /p m=
for /f "tokens=*" %%i in (%*) do (
set /a n+=1
set line=!line!%%i
if !n! equ !m! (
echo !line!>>result.txt
set line=
set /a n=0
)
)
endlocal

2006-12-11 02:34
查看资料  发送邮件  发短消息 网志  OICQ (327337973)  编辑帖子  回复  引用回复
ccwan
金牌会员




积分 2725
发帖 1160
注册 2006-9-23
来自 河北廊坊
状态 离线
『第 8 楼』:  

我试了一下,好像最后不足几行时不能合并甚至不显示。
例如每两行合并,若为奇数,最后一行result.txt中没有,
即:每n行合并,若总行数不是n的整数倍数,则余下的行里的内容不被合并显示。

不知是否只有我的机子这样。



三人行,必有吾师焉。   学然后知不足,教然后知困,然后能自强也。
2006-12-11 02:58
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wydos
中级用户





积分 304
发帖 117
注册 2006-4-4
状态 离线
『第 9 楼』:  

情况确实如ccwan所说的。
应该在代码中加个求余的判断

改了一下:
@echo off
setlocal enabledelayedexpansion
echo 请问你要每几行合并成一行,请输入数字,回车确定!
@set /p m=
for /f "tokens=*" %%i in (%*) do (
set /a hangn+=1
set /a n+=1
set line=!line!%%i
if !n! equ !m! (
echo !line!>>result.txt
set line=
set /a n=0
)
)
rem 以下代码用于处理剩下的行
set /a t=!hangn!%%!m!
if !t! equ 0 goto end
echo !line!>>result.txt
:end
endlocal
不知大家有没有更好的代码

[ Last edited by wydos on 2006-12-11 at 04:56 AM ]

2006-12-11 04:37
查看资料  发送邮件  发短消息 网志  OICQ (327337973)  编辑帖子  回复  引用回复
ccwan
金牌会员




积分 2725
发帖 1160
注册 2006-9-23
来自 河北廊坊
状态 离线
『第 10 楼』:  

试过了,成功。



三人行,必有吾师焉。   学然后知不足,教然后知困,然后能自强也。
2006-12-11 06:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 11 楼』:  


@echo off
    setlocal enabledelayedexpansion
rem 下面的文件名若包含空格注意加引号
    set file=a.txt
    for /f "delims=: tokens=1*" %%i in ('findstr /n .* %file%') do set num=%%i && set "%%i=%%j"
   
    echo 显示全部:
    for /l %%i in (1,1,%num%) do echo,!%%i!
    pause

    echo 显示单数行:
    for /l %%i in (1,2,%num%) do echo,!%%i!
    pause

    echo 显示双数行:
    set "num_ex="
    set /a num_ex=%num% + 1
    for /l %%i in (2,2,%num_ex%) do echo,!%%i!
    pause

    echo 每两行合并:
    set str=
    for /l %%i in (1,1,%num%) do (
        if defined str (echo,!str!!%%i!&&set "str="
                       ) else (
                               set "str=!%%i!"
                               )
    )
    echo,!str! && set "str="
    pause

    echo 显示前10行:
    for /l %%i in (1,1,10) do if defined %%i echo,!%%i!
    pause
exit /b 0
因为处理字符的工作都是用vbs来完成,所以上面的代码未测试,只为提供思路。

2006-12-11 07:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yardian
中级用户




积分 305
发帖 85
注册 2005-5-23
状态 离线
『第 12 楼』:  



  Quote:
Originally posted by lotus516 at 2006-12-11 12:11 AM:
这个也叫原创,相似的内容好久前就有了!!
http://www.cn-dos.net/forum/view ... ghlight=%2Blotus516

我感觉这句话有问题,只要不是抄袭别人的,自己做出来的,都是应该是原创吧?好像原创并没规定不可以相同吧?
纯属灌水,老兄别在意啊!!!!

2006-12-12 02:06
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: