Originally posted by terse at 2008-4-1 16:35:
我来一个 虽然多一FOR 但有效 怎么多个%%I
@echo off
for /f "delims=" %%i in (a.txt) do >>c.txt echo %%i&call :loop
for /f "delims=" %%i in (b.txt) do i ...
学习!!!!!!!!!!
批处理之家新域名:www.bathome.net
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!
Originally posted by terse at 2008-4-1 16:35:
我来一个 虽然多一FOR 但有效 怎么多个%%I
@echo off
for /f "delims=" %%i in (a.txt) do >>c.txt echo %%i&call :loop
for /f "delims=" %%i in (b.txt) do i ...
@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
@echo off&cd.>c.txt
set max=-1
for /f "delims=" %%a in (1.txt) do (
>>c.txt echo %%a&set /a max+=1
call :loop %%max%%
)
set /a max+=1
set flag=a
:loop
if %max% equ 0 (set skip=) else set "skip=skip=%max%"
for /f "%skip% delims=" %%i in (2.txt) do (
>>c.txt echo %%i
if not defined flag goto :eof
)
if not defined flag (goto :eof) else start c.txt&exit
Originally posted by 26933062 at 2008-4-1 21:40:
原来是在不知道哪个文件行数多的情况下
如此把2楼代码稍作修改即可达到楼主的要求
:
@echo off&cd.>c.txt
set max=-1
for /f "delims=" %%a i ...
Originally posted by balinger at 2008-4-1 21:58:
14楼的思路的确奇妙,令人佩服!
不过还有个小问题,如果 b.txt 中有相同的行,就会出错。
| 评分人 | 分数 | 时间 |
|---|---|---|
| bat-zw | +4 | 2008-04-02 13:51 |
@echo off
set n=-1
for /f "delims=" %%i in ('findstr /n .* a.txt') do (
set a=%%i
set /a n+=1
set /a v=n+1
setlocal enabledelayedexpansion
set a=!a:*:=!&echo !a!&call :lp
endlocal
)
for /f "skip=%n% delims=" %%i in ('findstr .* b.txt') do echo %%i
pause&goto :eof
:lp
set m=skip=!n!
if "!m!"=="skip=0" set m=
for /f "delims= %m%" %%i in ('findstr /n .* b.txt') do (
set b=%%i
if "!b:~,1!"=="!v!" set b=!b:*:=!&echo !b!&goto :eof
if "!b:~,2!"=="!v!" set b=!b:*:=!&echo !b!&goto :eof
if "!b:~,3!"=="!v!" set b=!b:*:=!&echo !b!&goto :eof
)