[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
是不是可以换个思路:判断和输出同时进行呢?
***共同提高***

TOP

这类的交错输出的文本题比较经典,不确定到底那个多,岂不是要先得读出行数多或行数少的那个?
心绪平和,眼藏静谧。

TOP

给个小提示:
可以先判断两个文本哪个的行数多,再把行多的文本放到第一个for中。

同时也可以不判断文本的行数,但思路就要开放点了。

本人暂时想出了三个解决方案,暂不贴出,希望大家能有更好的办法。
***共同提高***

TOP

原帖由 pusofalse 于 2008-7-25 00:01 发表
这题应该是1.txt总是比2.txt多吧?


未必,也有可能是 2.txt 比 1.txt 的行数多。
技术问题请到论坛发帖求助!

TOP

这题应该是1.txt总是比2.txt多吧?
心绪平和,眼藏静谧。

TOP

原帖由 随风 于 2008-7-24 13:38 发表
纠正一点,2楼并没有产生临时文件,他只是输出到文件,不算违规。

对不起,是我搞错了,已更正。
***共同提高***

TOP

纠正一点,2楼并没有产生临时文件,他只是输出到文件,不算违规。
此题,说难不难,说简单也不简单,不过以“浅默”的功力似乎不应该只是如此。。。
大家都来试试。。。看谁最先给出完美答案。。







.
技术问题请到论坛发帖求助!

TOP

首先对二楼做为鼓励予以加分,同时对存在的问题予以指出:
二楼的方法存在以下的问题:
1 首先我们不知道两个文本各有多少行,如果1.txt的行数比2.txt少,而你的代码中for循环到
了1.txt最后一行就终止了,那么2.txt多出的行就全部漏掉了。
2 如果1.txt中的行数比2.txt少,二楼的代码也存在效率问题,在上面的代码中调用for的次数
是1.txt行数乘上2.txt的行数,而理论上最少的调用次数是两文本行数的和。
3 if %%i==%%a改为if "%%i"=="%%a"实为妥当些。
4 最后的pause出现了笔误。

[ 本帖最后由 batman 于 2008-7-24 15:25 编辑 ]
***共同提高***

TOP

@echo off
for /f "tokens=1* delims=:" %%i in ('findstr /n .* 1.txt') do (
    echo %%j>>3.txt
    for /f "tokens=1* delims=:" %%a in ('findstr /n .* 2.txt') do (
        if %%i==%%a echo %%b>>3.txt
    )
)   
pasle
1

评分人数

    • batman: 以示鼓励,继续加油。PB + 1

TOP

返回列表