[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理怎样在文本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                 *********  **********  **********
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

  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
复制代码
我自己写的,文本内容少的可以,但文本内容大了效率很低,麻烦帮忙指点个高效率的。谢谢了!

TOP

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
复制代码
1

评分人数

TOP

回复 3# terse


    谢谢您!的确比我的效率高多了。但我想问一下_%%i中的那个下划线“_”和!_%%i! 怎么理解?再次感谢!

TOP

回复 4# sweet惜缘


    没有什么特殊含义,就是变量名的一部分而已,你还可以把它换成其它字符。

TOP

回复 5# forfiles

哦,知道了,谢谢!

TOP

返回列表