标题: [文本处理] (已解决)BAT批处理怎样实现两文本互相插入? [打印本页]
作者: BHsolve 时间: 2013-12-29 23:17 标题: (已解决)BAT批处理怎样实现两文本互相插入?
本帖最后由 BHsolve 于 2013-12-30 19:39 编辑
有两个文本如下(实际中并不知道两文本各有多少行):
文本1.txt
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
ccccccccccccccccccccccccccccccccccccccc
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
ggggggggggggggggggggggggggggggggggggggg
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
文本2.txt
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
要求用批处理输出如下(两文本交替输出):
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
ccccccccccccccccccccccccccccccccccccccc
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj
ggggggggggggggggggggggggggggggggggggggg
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
要求:
1 尽量不生成临时文件
2 代码要高效
3 代码尽量简洁- @echo off
- setlocal enabledelayedexpansion
- for /f %%a in (1.txt) do (
- set /a p+=1
- if "!p!" geq 5 echo %%a
- for /f %%i in (2.txt) do (
- set /a w+=1
- if "!w!" equ "!p!" ( echo %%a && echo %%i)
- )
- set w=
- )
- pause
复制代码
这套代码运行为什么失败,
显示的是:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
ccccccccccccccccccccccccccccccccccccccc
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj
ggggggggggggggggggggggggggggggggggggggg
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
少了最后两行这是为什么啊
作者: lifei259 时间: 2013-12-30 01:51
- @echo off
- for /f "delims=:" %%a in ('findstr/n . 1.txt') do set a=%%a
- for /f "delims=:" %%b in ('findstr/n . 2.txt') do set b=%%b
- if %a% geq %b% (set num=%a%) else (set num=%b%)
- set n=0
- :aaa
- for /f %%i in ('more +%n% 1.txt') do (echo,%%i>>n.txt&goto :1)
- :1
- for /f %%j in ('more +%n% 2.txt') do (echo,%%j>>n.txt&goto :2)
- :2
- set/a n+=1
- if %n% leq %num% goto :aaa
- pause
复制代码
作者: terse 时间: 2013-12-30 03:00
- @echo off&setlocal enabledelayedexpansion
- if "%~1" == "" (
- set "1.txt=a"&set "2.txt=b"
- for /f "tokens=1*" %%i in ('%~s0 :^|sort') do echo;%%j
- pause&exit
- ) else for /f "tokens=1,2* delims=:" %%a in ('findstr /n . 1.txt 2.txt') do (
- set str=00000000%%b!%%a!
- echo !str:~-8! %%c
- )
复制代码
作者: BHsolve 时间: 2013-12-30 10:33
回复 2# lifei259
我想要的不是怎么解决,而是代码为什么出错,再说哥们这最后的结果不是保存到n.txt了吗 。 — —
作者: BHsolve 时间: 2013-12-30 10:49
回复 3# terse
好多地方看不懂 — —
比如:"%~1" == "" '%~s0 :^|sort'
作者: BHsolve 时间: 2013-12-30 19:40
贴吧的人解决了删掉
if "!p!" geq 5 echo %%a
引号就好了
虽然我审错了题
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |