@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
不好意思,为了得到提高,本人虽然水平有限,还是试着解释这段代码如下:
第一个for循环表示从a.txt中依次读取每行,每读取一行就把这行添加输入到c.txt中然后跳转到第二个for循环中;
第二个for循环的意思是依次读取b.txt中每一行,每读一行就把存在于循环中%%i变量(第二个for循环的%%i),在b.txt中这行中查找一次,如果没发现就把这一行改变变量名为A并添加输入到c.txt中,然后结束再开始第一个for循环,这样后面的每次循环就不会查找这一行了(其变量名为A而不是%%i);
而当第一个大循环也就是第一和第二个for循环结束后,便开始了第三个for语句的循环,在这个for循环中就是一行行地对b.txt查找在当前循环中是否有变量%%i(同样行,其余的行的变量名都变成A了)的存在,如没有就添加输入到c.txt中。
真的好难解释啊!!!!!!!!!!!!
总结:trse巧妙的将三个for循环中的变量都命名为%%i,同时反复运用 if (not) defined语句进行查找识别,成功的实现了对a.txt和b.txt跳行并不丢失行的输出,实在是高,佩服!!!