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

[文本处理] 批处理如何根据两个文本的前两列内容按指定条件提取相应数据行

[复制链接]
 楼主| 发表于 2016-11-30 18:48:26 | 显示全部楼层
回复 14# happy886rr


    恩,是的,我已经把所有excel转换成了txt ,请问可以用批处理了吗?
 楼主| 发表于 2016-11-30 18:49:10 | 显示全部楼层
回复 12# CommandBatCmd


    谢谢提醒,我已经把excel全部化成txt了
发表于 2016-11-30 19:25:54 | 显示全部楼层
回复 17# newbat123
  1. @echo off
  2. set a=A文件.txt&@rem 修改为第一个文件名
  3. set b=B文件.txt&@rem 修改为第二个文件名
  4. set #1=1.txt&set #2=2.txt&set #3=3.txt&set #4=4.txt
  5. echo 开始:%date% %time%
  6. gawk "{if(NR==1){print $0 >"%#1%";print $0 >"%#2%"}else{if($3==null){print $0 >"%#1%"}else{print $0 >"%#2%"}}}" "%a%"
  7. gawk "{if(NR==1){print $0 >"%#3%";print $0 >"%#4%";exit}}" "%b%"
  8. gawk "{if(FNR>1){print $0}}" "%#1%" "%b%"|gawk "{if(!($1$2 in a)){ a[$1$2];print >>"%#4%"}else{print >>"%#3%"}}"
  9. gawk "/.*/" "%#4%"|gawk "{if($3!=null){print >"%#4%"}}"
  10. echo 结束:%date% %time%
  11. pause&exit
复制代码

评分

参与人数 1技术 +1 收起 理由
newbat123 + 1 通过

查看全部评分

 楼主| 发表于 2016-12-1 14:08:58 | 显示全部楼层
回复 18# CommandBatCmd


    不好意思,我试了您的程序,没出来结果。
发表于 2016-12-1 14:39:28 | 显示全部楼层
回复 19# newbat123


    保存为以下三种都是文本文件格式,但要保存为1.、3.这两种,
1. CSV (逗号分隔)(*.csv)
2. Unicode 文本(*.txt)
3. 文本文件(制表符分隔)(*.txt)

如果保存为第一种,把gawk后添加参数 -F"," (逗号分隔) 或者在程序内添加【FS=","】
如果保存为第三种,程序可以直接处理的啊?

怎么样的没结果或把无法处理的结果贴出来让大家看看
 楼主| 发表于 2016-12-1 15:00:42 | 显示全部楼层
回复 20# CommandBatCmd


    保存的是第3种,就是运行的时候,就直接闪退了,来不及保存
发表于 2016-12-1 15:21:14 | 显示全部楼层
回复 21# newbat123


    用上面的程序刚才测试了你上传的文件,没有发现闪退,并且结果也正确。
你用的gawk是3.1.6以上的吗?什么系统?32位或64位?把修改后的代码贴出来看看。
 楼主| 发表于 2016-12-1 15:46:26 | 显示全部楼层
回复 22# CommandBatCmd


    好的 ,我再试试
发表于 2016-12-1 15:58:02 | 显示全部楼层
把批处理跟“文本a.txt”“文本b.txt”放在一起运行
  1. @echo off
  2. 2>nul del $*.log
  3. set "fa=文本a.txt"
  4. set "fb=文本b.txt"
  5. for /f "skip=1 delims=" %%a in ('type "%fa%"') do (
  6.     for /f "tokens=1,2*" %%b in ("%%a") do (
  7.         if "%%d" equ "" (
  8.             >>"$1.log" echo;%%a
  9.             set #%%b%%c=1
  10.         ) else >>"$2.log" echo;%%a
  11.     )
  12. )
  13. for /f "delims=" %%a in ('type "%fb%"') do (
  14.     for /f "tokens=1,2*" %%b in ("%%a") do (
  15.         if defined #%%b%%c (
  16.             >>"$3.log" echo;%%a
  17.         ) else >>"$4.log" echo;%%a
  18.     )
  19. )
  20. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
newbat123 + 1 技术

查看全部评分

 楼主| 发表于 2016-12-6 13:05:55 | 显示全部楼层
回复 24# pcl_test


    你的程序通过 只是需要一个一个的合并在一起
 楼主| 发表于 2016-12-6 13:06:13 | 显示全部楼层
回复 24# pcl_test


    已通过运行,十分感谢
 楼主| 发表于 2016-12-6 13:07:20 | 显示全部楼层
回复 18# CommandBatCmd


    已通过运行,十分感谢
 楼主| 发表于 2017-4-3 18:34:06 | 显示全部楼层
回复 24# pcl_test 反复试验之后 发现还是有问题 就是当挑选出1,2文件之后,却不能按照1中的文件完全挑出3,4   是相互混杂的!!
 楼主| 发表于 2017-4-3 19:09:18 | 显示全部楼层
回复 15# 523066680 的确是csv,希望能用批处理解决
发表于 2017-4-3 19:53:47 | 显示全部楼层
回复 28# newbat123

把你测试用的源文件xls和转换后的txt或csv文件用网盘分享出来
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 23:40 , Processed in 0.021804 second(s), 6 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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