[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] FOR循环嵌套时处理两个文本文件中每一行时的效率

有两个文本文件1.txt和2.txt
1.txt
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
复制代码

2.txt
  1. a
  2. b
  3. c
  4. d
  5. e
复制代码


要求:取两个文本文件的每一行。

代码:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f %%n in (1.txt) do (
  4.        set temp_m=
  5.        set /a temp_n+=1
  6.        for /f %%m in (2.txt) do (
  7.              set /a temp_m+=1
  8.              if !temp_n! == !temp_m! echo %%n %%m
  9.        )
  10. )
  11. pause
复制代码


但是在两个文本文件较大时候效率就N低,还有其他的好方法么?

将两个文件行号相同的行合并,这个问题也很经典。
文本较小且没有特殊字符时,可以用设置变量法。
  1. for /f "tokens=1* delims=:" %%a in ('findstr /n .* 1.txt') do set _%%a=%%b
  2. for /f "tokens=1* delims=:" %%a in ('findstr /n .* 2.txt') do echo !_%%a! %%b
复制代码
文本很大或有特殊字符,这个方法就不行了。
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

回复 2楼 的帖子

这个方法不错,比较巧妙!

TOP

确实是个经典的问题,好像除了3楼的方法就只有call 了,但楼主的方法是不可取的。
看谁还有更好的思路。。。
技术问题请到论坛发帖求助!

TOP

回复 4楼 的帖子

呵呵,我的那个“小打小闹”还行。

TOP

合并行数相同的两个文本
  1. paste a.txt b.txt>c.txt
复制代码
第三方命令行工具 paste.exe 下载地址:
http://bbs.bathome.net/thread-1114-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

CMD读文件没有“暂停”功能,打开文件读取内容(放到内存中)后就马上自动关闭了。不像wsh脚本中的fso,打开文件后就保持为打开状态,关闭之前还不能删除文件。打开时Read、ReadLine、ReadAll想怎么读就怎么读。
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

返回列表