Board logo

标题: [文本处理] [已解决]批处理怎样在文本2中插入文本1中相对应的内容? [打印本页]

作者: sweet惜缘    时间: 2012-9-6 16:13     标题: [已解决]批处理怎样在文本2中插入文本1中相对应的内容?

麻烦大家帮个忙:
1.txt的内容为:
   ID     N1  N2
   12a     A    7
    2we   D    1
    3we   B    2
    .........
  后面的内容都是这种格式:第一列为ID号,第三列是数字。
  2.txt的内容为:
   ID            N1                  N2                    N3
    12a   *********  **********   **********
    2we   *********  **********  **********
    wir     *********  **********   **********
  3we   *********  **********  **********
 1et     *********  **********   **********
  .........
   此文本的第一列的ID号包含1.txt文本中所有的ID号。

现在需要在2.txt中查找与1.txt文本ID号相同的行,并把1.txt中第三列对应的数字添加到2.txt中输出。

按上面的内容最终结果为:

    ID     新插入列            N1                  N2                    N3         
    12a        7                 *********  **********   **********
    2we       1                 *********  **********  **********
    3we       2                 *********  **********  **********
作者: sweet惜缘    时间: 2012-9-6 22:46

  1. @echo off
  2. (for /f "tokens=1,3 delims= " %%a in (1.txt) do (
  3.   for /f "tokens=1,* delims= " %%c in (2.txt) do (
  4.     if "%%a"=="%%c" echo %%a %%b %%d
  5.   )
  6. ))>3.txt
复制代码
我自己写的,文本内容少的可以,但文本内容大了效率很低,麻烦帮忙指点个高效率的。谢谢了!
作者: terse    时间: 2012-9-6 23:22

1.txt文件不是很大的话 可以试下
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=1,3" %%i in (1.txt) do set _%%i=%%j
  3. (for /f "tokens=1,*" %%i in (2.txt) do if defined _%%i echo %%i !_%%i! %%j)>3.txt
复制代码

作者: sweet惜缘    时间: 2012-9-7 10:56

回复 3# terse


    谢谢您!的确比我的效率高多了。但我想问一下_%%i中的那个下划线“_”和!_%%i! 怎么理解?再次感谢!
作者: forfiles    时间: 2012-9-7 16:21

回复 4# sweet惜缘


    没有什么特殊含义,就是变量名的一部分而已,你还可以把它换成其它字符。
作者: sweet惜缘    时间: 2012-9-7 18:36

回复 5# forfiles

哦,知道了,谢谢!




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