Board logo

标题: [文本处理] 批处理怎样将文本添加到文本的每一行后? [打印本页]

作者: Wingl83    时间: 2008-8-5 20:58     标题: 批处理怎样将文本添加到文本的每一行后?

我想完成这样的事情:
我有两份文件:
第一份是: AAA               

                  BBB        
                  ……           ……
第二份是:①①①
                 ②②②         

                 ……           ……

现在我想将第二份添加到第一份的文件去,变成:
AAA    ①①①

BBB   ②②②

第一行对应第一行,第二行对应第二行,可以吗?

(上述文件文字为随意英文、中文或数字,不是序号之类的,只论排列,中间空格随意,最好可以按要求更改。)
作者: pusofalse    时间: 2008-8-5 21:05

  1. @echo off&setlocal enabledelayedexpansion&set n=-1
  2. for /f "delims=" %%a in (1.txt) do (
  3. set/a n+=1
  4. set flag=
  5. call :lp %%a
  6. if not defined flag echo %%a
  7. )
  8. :lp
  9. if "%1" equ "" set/a n+=1
  10. set m=skip=%n%
  11. if "%m%" equ "skip=0" set "m="
  12. for /f "%m% delims=" %%a in (2.txt) do if "%1" neq "" (echo %1         %%a&set flag=a&goto :eof) else echo %%a
  13. if "%1" equ "" pause
复制代码
搜索一下"练习"。。。 你的问题就可以不用提了。

[ 本帖最后由 pusofalse 于 2008-8-5 22:49 编辑 ]
作者: Batcher    时间: 2008-8-5 21:13

  1. paste a.txt b.txt>c.txt
复制代码
http://unxutils.sourceforge.net/
作者: Wingl83    时间: 2008-8-5 22:11

2楼的可不可以输出为3.txt呢?
3楼的不行嘢,是不是代码错了?

[ 本帖最后由 Wingl83 于 2008-8-5 22:19 编辑 ]
作者: batman    时间: 2008-8-5 22:21

如两文本行是一样:
  1. @echo off
  2. set "n=-1"
  3. :lp
  4. set /a n+=1
  5. if %n% equ 0 (set "k=") else (set "k=skip=%n%")
  6. for /f "%k% delims=" %%i in (1.txt) do set /p=%%i <nul>>3.txt&goto next
  7. :next
  8. for /f "%k% delims=" %%i in (2.txt) do set /p=%%i<nul>>3.txt&echo.>>3.txt&goto lp
  9. start 3.txt
复制代码

[ 本帖最后由 batman 于 2008-8-5 22:25 编辑 ]
作者: pusofalse    时间: 2008-8-5 22:24

把上面的代码存为a.bat 然后打开cmd 输入a>3.txt
ok
作者: batman    时间: 2008-8-5 22:25

原帖由 Wingl83 于 2008-8-5 22:11 发表
2楼的可不可以输出为3.txt呢?
3楼的不行嘢,是不是代码错了?

是将next打成nest了,已修正。
作者: Wingl83    时间: 2008-8-5 22:26

谢谢你们……
作者: Batcher    时间: 2008-8-5 22:26     标题: 回复 4楼 的帖子

Q: 为什么不行啊?
A: 去电线杆上找个老军医的手机,他是专治+包治这个的。如果治疗周期较长,建议列出你的测试环境、测试用例、出错信息,供大家帮助你解决问题。
作者: Wingl83    时间: 2008-8-5 22:30

原帖由 pusofalse 于 2008-8-5 22:24 发表
把上面的代码存为a.bat 然后打开cmd 输入a>3.txt
ok

作者: Wingl83    时间: 2008-8-5 22:32

原帖由 Batcher 于 2008-8-5 22:26 发表
Q: 为什么不行啊?
A: 去电线杆上找个老军医的手机,他是专治+包治这个的。如果治疗周期较长,建议列出你的测试环境、测试用例、出错信息,供大家帮助你解决问题。


晕倒中……
作者: pusofalse    时间: 2008-8-5 22:38

原帖由 Wingl83 于 2008-8-5 22:30 发表


193


你放哪个目录呢。。。CD 命令进入存放a.bat的目录,a>3.txt 就OK了~
比如你放C盘里,打开cmd
依次输入。。
cd /d c:\
a>3.txt
作者: Wingl83    时间: 2008-8-5 22:44

原帖由 pusofalse 于 2008-8-5 22:38 发表


你放哪个目录呢。。。CD 命令进入存放a.bat的目录,a>3.txt 就OK了~
比如你放C盘里,打开cmd
依次输入。。
cd /d c:\
a>3.txt


谢谢你啊,可以了,不知可不可以将“>>3.txt”加近代码里呢?
作者: pusofalse    时间: 2008-8-5 22:45

要在代码中好多处添加,麻烦,所以就直接这样了。
作者: Wingl83    时间: 2008-8-5 22:46

2楼、5楼中,中间的空格为1个,若我想加多几个空格,应该怎样改呢?
作者: pusofalse    时间: 2008-8-5 22:50

2楼代码已经修改。
5楼代码。。。
请自己数,第六行,set /p=%%i <nul改为set/p=%%i       <nul

- -||| 好麻烦。
作者: Wingl83    时间: 2008-8-5 22:54

若我想将3.txt中2.txt的文本部分按一个“标准”对齐,应该怎样写呢?
(就像Word中的分栏一样,这个“标准”是1.txt最长的文字部分结束后的第5个字符)
作者: pusofalse    时间: 2008-8-5 22:56

set/p=%%i       <nul 试下把这里的空格改为一个或两个跳格可以不。
作者: Wingl83    时间: 2008-8-5 23:11

什么是跳格?
作者: pusofalse    时间: 2008-8-5 23:18

- -||||
tab键
作者: Wingl83    时间: 2008-8-6 00:33

2.txr文字部分变成

并不是完全对齐,也不是完全不对齐……




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2