中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-11 07:50
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]关于文本行与行合并~~ 查看 793 回复 4
楼 主 [求助]关于文本行与行合并~~ 发表于 2009-02-05 13:27 ·  中国 河南 鹤壁 联通
新手上路
积分 1
发帖 1
注册 2009-02-04 23:44
17年会员
UID 138046
性别 男
状态 离线
a.txt和b.txt
2个文本文件中,内容都是一行一行的,然后现在想把2个文件按一行一行的接起来,就是a的第一行接b的第一行,然后以此类推~~~
有人能帮忙吗??
谢谢啊~~~
2 发表于 2009-02-05 14:28 ·  中国 广东 广州 电信
银牌会员
★★★
永远的菜鸟
积分 1,335
发帖 574
注册 2007-11-27 12:50
18年会员
UID 103929
性别 男
来自 广西
状态 离线
下面的代码用于行数相同的两个文本,如果行数不一样,请作适当更改:
@echo off
Setlocal Enabledelayedexpansion
set n=0
for /f "delims=" %%a in ('type a.txt') do (
call :lp
set/p=%%a!str!<nul
echo.
set /a n+=1
)
pause
goto :eof
:lp
if "%n%"=="0" (set skp=) else (set skp=skip=!n!)
for /f "%skp% delims=" %%b in ('type b.txt') do (
set "str=%%b"&goto :eof
)


[ Last edited by moniuming on 2009-2-5 at 14:30 ]
3 发表于 2009-02-05 15:56 ·  美国 华盛顿州 金 雷德蒙德 Microsoft
初级用户
★★
积分 100
发帖 93
注册 2009-01-14 15:04
17年会员
UID 136661
性别 男
来自 湖南
状态 离线
我写了一个简单的,贴下代码,但是有一个问题就是,它不能把空格当一行,HAT大哥可以改进下吗?
@echo off&Setlocal EnableDelayedExpansion
REM %0 %*
REM

Set FileOne=%1
Set FileTwo=%2
Set Num1=0
Set Num2=0

for /f "delims=" %%i in (%FileOne%) do (
Set /a Num1+=1
for /f "delims=" %%j in (%FileTwo%) do (
Set /a Num2+=1
if !Num1!==!Num2! Set var=%%i%%j&&echo !var!>>test.txt
)
Set Num2=0
)

for /f "delims=" %%i in (%FileTwo%) do (
Set /a Num2+=1
if "!Num1!" LSS "!Num2!" echo %%i>>test.txt
)

Set Num1=0
for /f "delims=" %%i in (%FileOne%) do (
set /a Num1+=1
if "!Num1!" GTR "!Num2!" echo %%i>>test.txt
)

Endlocal
Cls&Pause
4 发表于 2009-02-05 16:33 ·  美国 华盛顿州 金 雷德蒙德 Microsoft
初级用户
★★
积分 100
发帖 93
注册 2009-01-14 15:04
17年会员
UID 136661
性别 男
来自 湖南
状态 离线
不好意思,研究了一下,我写了最后一个版本,可以适合以下情况:
1. 两个文件行数不一样
2.两个文件相同的行,某一行为空行
3.两个文件相同的行都为空行

其他的我还不清楚,现在先贴出代码:

REM %0 %*
REM
@echo off&Setlocal EnableDelayedExpansion

Set FileOne=%1
Set FileTwo=%2
Set Num1=0
Set Num2=0

for /f "tokens=1* delims=:" %%i in ('findstr /n .* %FileOne%') do (
Set /a Num1+=1
for /f "tokens=1* delims=:" %%a in ('findstr /n .* %FileTwo%') do (
Set /a Num2+=1
if !Num1!==!Num2! Set var=%%j%%b&&echo.!var!>>test.txt
)
Set Num2=0
)

echo !Num1! !Num2!
for /f "tokens=1* delims=:" %%i in ('findstr /n .* %FileTwo%') do (
Set /a Num2+=1
if "!Num1!" LSS "!Num2!" echo.%%j>>test.txt
)

Set Num1=0
echo !Num1! !Num2!
for /f "tokens=1* delims=:" %%i in ('findstr /n .* %FileOne%') do (
set /a Num1+=1
echo %%i
if "!Num1!" GTR "!Num2!" echo.%%j>>test.txt
)

Endlocal
cls&pause
5 发表于 2009-02-05 21:01 ·  中国 广东 东莞 电信
银牌会员
★★★
批处理编程迷
积分 1,916
发帖 752
注册 2008-12-28 04:30
17年会员
UID 135147
性别 男
来自 广西
状态 离线
学习了

[ Last edited by netbenton on 2009-2-5 at 21:10 ]
精简
=> 个人网志
论坛跳转: