@echo off
set n=-1
for /f "delims=" %%i in (1.txt) do call :lp %%i
pause>nul&goto :eof
:lp
set /a n+=1
set "m=skip=%n%"
if %n% equ 0 set "m="
for /f "%m% tokens=2 delims= " %%i in (2.txt) do echo %1 %%i>>3.txt&goto :eof
[ Last edited by zw19750516 on 2008-6-2 at 09:51 PM ]
作者: WANKOILZ 时间: 2008-6-3 12:44
@echo off
for /f "tokens=1*" %%a in (1.txt) do (
for /f "tokens=1*" %%i in (2.txt) do (
if %%b==%%i echo %%a %%b %%j
)
)
pause
作者: bat-zw 时间: 2008-6-3 12:45
Originally posted by WANKOILZ at 2008-6-3 12:44:
@echo off
for /f "tokens=1*" %%a in (1.txt) do (
for /f "tokens=1*" %%i in (2.txt) do (
if %%b==%%i echo %%a %%b %%j
)
)
pause
化码看起来是简化了很多,兄弟考虑了效率问题没有啊,我的两个for循环的次数是用+,而你的是用*。
作者: WANKOILZ 时间: 2008-6-3 12:48
我的两个for循环的次数是用+
我的循环的次数就肯定比你多了,呵呵
作者: bat-zw 时间: 2008-6-3 12:49
Originally posted by WANKOILZ at 2008-6-3 12:48:
+是什么意思
第一个for在a.txt中循环的次数+第二个for在b.txt中循环的次数,大循次数实际上就是等于a.txt的行数。
而你的在b.txt中循环的次数等于a.txt的行数*b.txt的行数。
在行数不多的情况下,你的代码执行还可以,但遇到行数多的情况,如两个文件各有10000行,你的代码执行的效率将慢得让人无可忍受,而这种情况是完全可以避免的。
[ Last edited by zw19750516 on 2008-6-3 at 12:57 PM ]