标题: [文本处理] FOR循环嵌套时处理两个文本文件中每一行时的效率 [打印本页]
作者: lxzzr 时间: 2009-6-10 17:36 标题: FOR循环嵌套时处理两个文本文件中每一行时的效率
有两个文本文件1.txt和2.txt
1.txt
复制代码
2.txt
复制代码
要求:取两个文本文件的每一行。
代码:
-
- @echo off
- setlocal enabledelayedexpansion
- for /f %%n in (1.txt) do (
- set temp_m=
- set /a temp_n+=1
- for /f %%m in (2.txt) do (
- set /a temp_m+=1
- if !temp_n! == !temp_m! echo %%n %%m
- )
- )
- pause
复制代码
但是在两个文本文件较大时候效率就N低,还有其他的好方法么?
作者: zqz0012005 时间: 2009-6-10 17:45
将两个文件行号相同的行合并,这个问题也很经典。
文本较小且没有特殊字符时,可以用设置变量法。- for /f "tokens=1* delims=:" %%a in ('findstr /n .* 1.txt') do set _%%a=%%b
- for /f "tokens=1* delims=:" %%a in ('findstr /n .* 2.txt') do echo !_%%a! %%b
复制代码
文本很大或有特殊字符,这个方法就不行了。
作者: lxzzr 时间: 2009-6-10 17:57 标题: 回复 2楼 的帖子
这个方法不错,比较巧妙!
作者: 随风 时间: 2009-6-10 17:59
确实是个经典的问题,好像除了3楼的方法就只有call 了,但楼主的方法是不可取的。
看谁还有更好的思路。。。
作者: lxzzr 时间: 2009-6-10 18:02 标题: 回复 4楼 的帖子
呵呵,我的那个“小打小闹”还行。
作者: Batcher 时间: 2009-6-10 21:03
合并行数相同的两个文本复制代码
第三方命令行工具 paste.exe 下载地址:
http://bbs.bathome.net/thread-1114-1-1.html
作者: zqz0012005 时间: 2009-6-10 21:30
CMD读文件没有“暂停”功能,打开文件读取内容(放到内存中)后就马上自动关闭了。不像wsh脚本中的fso,打开文件后就保持为打开状态,关闭之前还不能删除文件。打开时Read、ReadLine、ReadAll想怎么读就怎么读。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |