![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-09-27 14:08 |
共 47,813 主题排行 / 349,918 发帖 / 今日 0 篇 / 48,276 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 两个文本跳行输出(难题) |
| 可打印版本 2,636 / 24 |
| 第1楼 bat-zw | 发表于 2008-04-01 03:42 |
| 金牌会员 发帖 1,276 积分 3,105 | |
|
两个文本跳行输出(难题) ===============================================
虽然目前还没有人达到开始的要求主(可能是一个for镶嵌根本做不到),但还是有了比较完美的方案=======>见14楼,同时本人在17楼对这段代码进行了粗略的分析。 =================================== 本人苦思多日,终于想到了基本在一个大循环中解决的方案,==>见25楼 文本1.txt 文本2.txt 要求用批处理输出为 我写下的如下代码: 输出为: 丢了1.txt最后两行,搞了好久都没解决,只好请教大家了(注,要在一个循环中解决)。 [ Last edited by zw19750516 on 2008-4-2 at 09:54 PM ] |
|
| 第2楼 26933062 | 发表于 2008-04-01 04:12 |
| 银牌会员 发帖 879 积分 2,268 | |
|
呵呵,
为何非要在一个循环中完成,你的那个代码,效率是个大问题,1.txt有多少行,就要把2.txt循环多少遍。。。 怎么才算是一个循环啊?我觉得你的这个代码就应该不叫一个循环。所谓一个循环,应该是说只把一个文档循环一次。 另外,1.txt和2.txt的行数不一样,最后1.txt多的行怎么处理? 你给的标准输出,好像也有错误啊,wwwwwwww那一行去哪啦? : : [ Last edited by 26933062 on 2008-4-1 at 04:28 AM ] |
|
| 第3楼 bat-zw | 发表于 2008-04-01 11:04 |
| 金牌会员 发帖 1,276 积分 3,105 | |
Originally posted by 26933062 at 2008-4-1 04:12: 我的意思是在一个for镶嵌中解决这个问题,不然就谈不上难了,呵呵。 |
|
| 第4楼 huahua0919 | 发表于 2008-04-01 11:52 |
| 银牌会员 发帖 780 积分 1,608 | |
| 第5楼 bat-zw | 发表于 2008-04-01 12:09 |
| 金牌会员 发帖 1,276 积分 3,105 | |
|
不在一个循环中的解决方案: 还是没达到我最初的想法,但通用性还好,2楼、四楼的代码通用性还不行:
1 实际上我们不可能每次都知道到底1.txt和2.txt哪个的行数多(针对2楼的) 2 我们也不可能每次都知道1.txt和2.txt都有多少行(针对4楼的) 如意见不对,请指正,目的只有一个为了提高。 [ Last edited by zw19750516 on 2008-4-1 at 04:33 PM ] |
|
| 第6楼 huahua0919 | 发表于 2008-04-01 12:57 |
| 银牌会员 发帖 780 积分 1,608 | |
|
想知道多少行还不简单
列出两个行后,进行比较不就行了? |
|
| 第7楼 abcd | 发表于 2008-04-01 13:25 |
| 银牌会员 发帖 739 积分 1,436 | |
|
P不容易就换别的嘛。
|
|
| 第8楼 ansipeter | 发表于 2008-04-01 13:52 |
| 中级用户 发帖 130 积分 269 | |
|
虽然操作有些麻烦还是可以勉强实现的,不过代码多了点而已,唉
|
|
| 第9楼 huahua0919 | 发表于 2008-04-01 14:07 |
| 银牌会员 发帖 780 积分 1,608 | |
|
这个总应该行 |
|
| 第10楼 abcd | 发表于 2008-04-01 14:14 |
| 银牌会员 发帖 739 积分 1,436 | |
Originally posted by ansipeter at 2008-4-1 01:52 PM: |
|
| 第11楼 bat-zw | 发表于 2008-04-01 14:31 |
| 金牌会员 发帖 1,276 积分 3,105 | |
Originally posted by huahua0919 at 2008-4-1 14:07: |
|
| 第12楼 bat-zw | 发表于 2008-04-01 14:33 |
| 金牌会员 发帖 1,276 积分 3,105 | |
Originally posted by ansipeter at 2008-4-1 13:52: |
|
| 第13楼 ansipeter | 发表于 2008-04-01 14:51 |
| 中级用户 发帖 130 积分 269 | |
|
楼上的,你测试了吗?对,我的代码是有些通用性不好,必须在for /f "delims=: tokens=1*" %%a in ('findstr /n .* 1.txt') do call:ansi %%a "%%b"这句放置行多的那个文件,我这里测试通过,如果要是怎么放都可以的话,那添加个判断就可以很好的通用了,唉
|
|
| 第14楼 terse | 发表于 2008-04-01 16:35 |
| 银牌会员 发帖 946 积分 2,404 | |
|
我来一个 虽然多一FOR 但有效 怎么多个%%I
@echo off for /f "delims=" %%i in (a.txt) do >>c.txt echo %%i&call :loop for /f "delims=" %%i in (b.txt) do if not defined %%i echo %%i>>c.txt pause goto :eof :loop for /f "delims=" %%i in (b.txt) do if not defined %%i set %%i=A &>>c.txt echo %%i&goto :eof 上面处理不了b.txt重复行 所以改一下: @echo off for /f "delims=" %%i in (a.txt) do >>c.txt echo %%i&call :loop for /f "%n% delims=" %%i in (b.txt) do >>c.txt echo %%i pause goto :eof :loop for /f "%n% tokens=1* delims=:" %%i in ('findstr /n .* "b.txt"') do set n=skip=%%i &>>c.txt echo %%j&goto :eof [ Last edited by terse on 2008-4-2 at 12:53 PM ] |
|
| 第15楼 huahua0919 | 发表于 2008-04-01 16:35 |
| 银牌会员 发帖 780 积分 1,608 | |
|
楼主可嘉
|
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |