找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 31071|回复: 5

[文本处理] 【已解决】批处理如何提取多个txt文本的指定列的内容并按指定格式合并输出?

[复制链接]
发表于 2016-7-1 23:49:44 | 显示全部楼层 |阅读模式
本帖最后由 jrx401 于 2016-7-4 22:14 编辑

[文件举例]
文件名称1:123.txt
文件内容:
a1 231 zdfe4 as vrr
b1 2314 f44fw bs 12ed
b3 23s f4sad 1sdd 1sdd

文件名称2:acb.txt
文件内容:
a1 561 zdfe4 356 nhg
b1 3244 33fw 2dd 1ffd
b3 23 333ad cxd ffd

文件名称3:3j3.txt
文件内容:
a1 561 zdfe4 cc nhg
b1 3244 33fw bb 1ffd
b3 23 333ad 11 ffd

......

有无数类似以上文件(只有第一列是一样的),如果指定第四列,合并后如下;
文件名称:total.txt
a1 as 356 cc ...
b1 bs 2dd bb ...
b3 1sdd cxd 11 ...

评分

参与人数 1PB -2 收起 理由
pcl_test -2 勿发笼统的标题

查看全部评分

发表于 2016-7-2 06:48:46 | 显示全部楼层
n个文本的的所有同一行的指定列合并为一行,生成新文本。
等看高手风采
 楼主| 发表于 2016-7-3 12:23:36 | 显示全部楼层
回复 2# hlzj88


    不知道哪位高手指点一下呢?
发表于 2016-7-3 15:59:54 | 显示全部楼层
本帖最后由 pcl_test 于 2016-7-4 10:56 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. rem for %%a in (*.txt) do ……
  4. for /f "delims=" %%a in ('dir /a-d/b *.txt') do (
  5.     set n=1000000000
  6.     for /f "tokens=1-4*" %%b in ('type "%%a"') do (
  7.         set /a n+=1
  8.         for %%i in (!n!) do set "#%%i_%%b=!#%%i_%%b! %%e"
  9.     )
  10. )
  11. for /f "tokens=1*delims==" %%a in ('set #') do set "str=%%a"&echo;!str:*_=!!%%a!
  12. pause
复制代码
发表于 2016-7-3 17:07:10 | 显示全部楼层
本帖最后由 pcl_test 于 2016-7-3 20:38 编辑
  1. //&cls&dir /a-d/b *.txt|cscript -nologo -e:jscript "%~f0"&pause&exit
  2. var fso=new ActiveXObject('Scripting.Filesystemobject');
  3. var n=4, t={};  //指定第4列
  4. while(!WSH.StdIn.AtEndOfStream){
  5.     var f = fso.OpenTextFile(WSH.StdIn.ReadLine(), 1);
  6.     while(!f.AtEndOfStream){
  7.         var line = f.ReadLine().split(/\s+/);
  8.         if(line != ''){
  9.             if(!line[n-1])line[n-1]='*';
  10.             t[line[0]]=t[line[0]]?t[line[0]]+' '+line[n-1]:line[n-1];
  11.         }
  12.     }
  13. }
  14. for(var i in t)WSH.echo(i+' '+t[i]);
复制代码
 楼主| 发表于 2016-7-4 22:02:14 | 显示全部楼层
回复 4# pcl_test


   
感谢板主出手。
我的知识浅薄,研究了一下但是如下无法吃透。
1. 如下代码的# 符号是代表什么呢?
    for %%i in (!n!) do set "#%%i_%%b=!#%%i_%%b! %%e"
2.还有如下部分的 内容,特别是str=%%a"&echo;!str:*_=!!%% 部分。
for /f "tokens=1*delims==" %%a in ('set #') do set "str=%%a"&echo;!str:*_=!!%%a!

还请相助。
或介绍学习资料也可。
非常感谢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 14:28 , Processed in 0.019053 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表