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

[文本处理] [已解决]批处理如何提取多个文本中含有指定字符串的行里的数据并按指定格式合并输出

[复制链接]
发表于 2015-3-2 13:06:45 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-8-13 12:20 编辑

BAT如何提取文本内容并有序排列
感谢网友 cobat,pcl_test,慕夜蓝化 的帮助!
有很多文本,内容相似,都有X=?,Y=?等字段,但在哪一行不固定。如何能提取内容并有序排列,写到另一个文本中b.txt中(b.txt内容可以直接copy到EXCEL中,每个数据占一个格)
如文本内容:
123456.txt
...
x=10.5
asdfd
y=25.1
fdgg
z=30
...

234567.txt
...
x=15.5
y=35.1
z=30.8
...

想要的效果:(b.txt内容可以直接copy到EXCEL中,每个数据占一个格)
b.txt
        x        y        z
123456        10.5        25.1        30
234567        15.5        35.1        30.8

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2015-3-2 13:34:18 | 显示全部楼层
本帖最后由 cobat 于 2015-3-2 16:30 编辑
  1. @echo off
  2. (
  3. echo ,x,y,z
  4. for %%a in (*.txt) do (
  5.     <nul set/p=%%~na
  6.     for %%b in (x,y,z) do (
  7.         for /f "delims=xyz=" %%c in ('findstr "%%b=" "%%a"') do <nul set/p=,%%c
  8.     )
  9.     echo,
  10. )
  11. )>b.csv
  12. pause
复制代码
发表于 2015-3-2 13:36:09 | 显示全部楼层
回复 1# syqh2010
每个txt文件里都是只有唯一一个x=、y= 或z=吗?
 楼主| 发表于 2015-3-2 14:23:09 | 显示全部楼层
回复 3# pcl_test
是的,只有一个
发表于 2015-3-2 14:38:39 | 显示全部楼层
本帖最后由 pcl_test 于 2015-3-2 14:44 编辑

回复 4# syqh2010

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. >"汇总.csv" echo,文件名,X,Y,Z
  4. for %%a in (*.txt) do (
  5. set s=
  6. for /f "tokens=2 delims==" %%b in ('findstr "x= y= z=" "%%a"') do set "s=!s!%%b,"
  7. >>"汇总.csv" echo,%%~na,!s:~,-1!
  8. )
  9. pause
复制代码
发表于 2015-3-2 15:57:02 | 显示全部楼层

  1. @echo off
  2. (echo,                x        y        z
  3. for %%i in (*.txt) do (
  4.     set/p=%%~ni    <nul
  5.     for %%j in ("x=","y=","z=") do (
  6.         for /f "tokens=1,* delims==" %%a in ('findstr "^%%~j" "%%i"') do (
  7.             set/p=%%b        <nul
  8.         )
  9.     )
  10.     echo,
  11. )) >b.txt
  12. pause
复制代码
 楼主| 发表于 2015-3-2 22:16:50 | 显示全部楼层
回复 2# cobat

谢谢你,正合我意!
 楼主| 发表于 2015-3-2 22:19:45 | 显示全部楼层
回复 5# pcl_test

谢谢!也能达到效果,只是如果a.txt中没有xyz,也会列出来。

文件名        X        Y        Z
123        50        450        200
456        5        45        20
a        ~        -1
 楼主| 发表于 2015-3-2 22:23:49 | 显示全部楼层
回复 6# 慕夜蓝化

谢谢你!
能列出结果,但是有点小问题
1)不能COPY到EXEL,每个占一格   
2)其它文本如a.txt中没有xyz的,也列出文件名了
                x        y        z
123    50        450        200        
456    5        45        20        
a
发表于 2015-3-2 22:30:44 | 显示全部楼层
本帖最后由 pcl_test 于 2015-3-3 01:06 编辑

回复 8# syqh2010
已更正,适配各种情况

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. >"汇总.csv" echo,文件名,X,Y,Z
  4. for %%a in (*.txt) do (
  5. findstr "x=" "%%a" >>$ ||echo x= >>$
  6. echo.>>$
  7. findstr "y=" "%%a" >>$ ||echo y= >>$
  8. echo.>>$
  9. findstr "z=" "%%a" >>$ ||echo z= >>$
  10. for /f "delims=" %%i in ($) do >>$$ echo,%%i,
  11. move $$ $ >nul
  12. set s=
  13. for /f "tokens=1* delims==" %%b in ('findstr "x= y= z=" "$"') do set "s=!s!%%c"
  14. >>"汇总.csv" echo,%%~na,!s!
  15. del $
  16. )
  17. pause
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2015-3-2 22:41:38 | 显示全部楼层
回复 10# pcl_test
谢谢你!可以了!
发表于 2015-3-2 22:41:58 | 显示全部楼层
回复 8# syqh2010
其实如果你细心点还会发现我们三个的代码对于txt文件里只有一个y=或是z=时,都有问题
 楼主| 发表于 2015-3-2 22:50:49 | 显示全部楼层
回复 12# pcl_test
谢谢指点!
那么请问如何修改,因为.txt中并不一定xyz同时存在。
发表于 2015-3-2 23:09:23 | 显示全部楼层
本帖最后由 cobat 于 2015-3-2 23:10 编辑

试试这个
  1. @echo off
  2. (
  3. echo ,x,y,z
  4. for %%a in (*.txt) do (
  5.     <nul set/p=%%~na
  6.     for %%b in (x,y,z) do (
  7.         <nul set/p=,
  8.         for /f "delims=xyz=" %%c in ('findstr "%%b=" "%%a"') do <nul set/p=%%c
  9.     )
  10.     echo,
  11. )
  12. )>b.csv
  13. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2015-3-2 23:54:32 | 显示全部楼层
回复 14# cobat
谢谢你!可以用!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 14:42 , Processed in 0.022079 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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